C++ 两个pthread条件变量可以共享同一个互斥锁吗?
我查阅了中的文档,但没有明确提到这一点。如能及时回复,将不胜感激 是的。如果你想等待不同的条件,这有时是个好主意。例如,您可能有一个队列和条件变量,用于“未满”和“未空”等。。。有人将数据放入队列等待“未满”。有人从队列中取出数据,等待“notempty”。它们都使用相同的互斥锁。是。这是常见的做法: 典型示例:C++ 两个pthread条件变量可以共享同一个互斥锁吗?,c++,multithreading,pthreads,C++,Multithreading,Pthreads,我查阅了中的文档,但没有明确提到这一点。如能及时回复,将不胜感激 是的。如果你想等待不同的条件,这有时是个好主意。例如,您可能有一个队列和条件变量,用于“未满”和“未空”等。。。有人将数据放入队列等待“未满”。有人从队列中取出数据,等待“notempty”。它们都使用相同的互斥锁。是。这是常见的做法: 典型示例: mutex queue_mutex; cond queue_is_not_full_cond; cond queue_is_not_empty_cond; push() l
mutex queue_mutex;
cond queue_is_not_full_cond;
cond queue_is_not_empty_cond;
push()
lock(queue_mutex)
while(queue is full)
wait(queue_is_not_full_cond,queue_mutex);
do push...
signal(queue_is_not_empty_cond)
unlock(queue_mutex)
pop()
lock(queue_mutex)
while(queue is empty)
wait(queue_is_not_empty_cond,queue_mutex);
do pop...
signal(queue_is_not_full_cond)
unlock(queue_mutex)
谢谢。有相关链接吗?谷歌给出了这个例子:很晚的评论,但实际上建议使用2个condvar和一个互斥锁。例如,在队列情况下,请参阅Butenhof“使用Posix线程编程”。当其他线程没有等待时,为什么要发信号?