我浏览了http://www.opengroup.org/onlinepubs/009695399/functions/pthread_cond_wait.html中的文档,但未明确提及。任何迅速的回应将非常感谢。
答案 0 :(得分:25)
是。这是常见的实践:
典型示例:
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)
答案 1 :(得分:18)
是。如果您有等待的条件,这有时候是一个好主意。例如,您可能有“not full”和“not empty”等的队列和条件变量...将数据放入队列的人等待“not full”。从队列中取出数据的人等待“不为空”。它们都使用相同的互斥锁。