想问个Mutex 和 Condition Variable 的问题



  • 在复习的时候思考了下Condition Variable相对于Mutex的优势。
    想请教下大家这样想对不对:
    对于Mutex而言,如果多个线程想要访问一个公共的资源,其他线程不会进入block状态,并且始终占有CPU资源。然后再锁释放以后,再依次访问。
    但是Condition Variable要等待某一个状态的时候,他会先被block释放CPU资源。等其他线程Notify()之后再唤醒。

    所以Condition Variable比Mutex在CPU性能方面有更大的优势。

    不知道这样的想法是不是正确?有没有老师可以帮忙回答一下?



  • 按我的理解,用Mutex, 进程也会进入等待状态。只是运用conditional variable,进程能够在critical section内部直接进入等待状态,这样的用起来更佳方便。比如说用semaphore实现blocking que, 需要三个semaphore, 但是用monitor,至于要一个就够了。 不知道说的对不对,欢迎指正。


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待