当前位置: 技术问答>linux和unix
条件变量和互斥量区别
来源: 互联网 发布时间:2016-04-29
本文导语: 最近刚学linux编程,看到条件变量,怎么感觉条件变量和互斥量差不多啊,用条件变量的地方我感觉可以用互斥量代替啊,都是为了防止竞争发生,不知道条件变量和互斥量的区别,哪位给解释一下,越详细越好,谢...
最近刚学linux编程,看到条件变量,怎么感觉条件变量和互斥量差不多啊,用条件变量的地方我感觉可以用互斥量代替啊,都是为了防止竞争发生,不知道条件变量和互斥量的区别,哪位给解释一下,越详细越好,谢谢了!
|
mutex:同一个时刻只有一个线程可以获得lock
conditional var:可以用好多线程同时等待,可以用pthread_cond_broadcast来通知所有等待的线程。
mutex:会锁住cpu,所以适宜short period的lock
conditional var:如果条件不成立的话,会休眠(跟pthread_mutex_xxx联合用的,在休眠之前会释放mutex)
看看:
https://computing.llnl.gov/tutorials/pthreads/#MutexOverview
conditional var:可以用好多线程同时等待,可以用pthread_cond_broadcast来通知所有等待的线程。
mutex:会锁住cpu,所以适宜short period的lock
conditional var:如果条件不成立的话,会休眠(跟pthread_mutex_xxx联合用的,在休眠之前会释放mutex)
看看:
https://computing.llnl.gov/tutorials/pthreads/#MutexOverview