Art*_*yom 26

是.这是常见的实践:

典型例子:

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)
Run Code Online (Sandbox Code Playgroud)


xsc*_*ott 18

是.如果您有等待的条件,这有时候是一个好主意.例如,您可能有"not full"和"not empty"等的队列和条件变量...将数据放入队列的人等待"not full".从队列中取出数据的人等待"不为空".它们都使用相同的互斥锁.