c++ - 2 个 pthread 条件变量可以共享同一个互斥锁吗?

标签 c++ multithreading pthreads

我浏览了 http://www.opengroup.org/onlinepubs/009695399/functions/pthread_cond_wait.html 中的文档但这没有明确提及。任何迅速的回应将不胜感激。

最佳答案

是的。这是常见的做法:

典型示例:

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)

关于c++ - 2 个 pthread 条件变量可以共享同一个互斥锁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4062126/

相关文章:

c++ - 找不到 Dyld 符号错误

C++ win32 嵌入第 3 方应用程序

c - 如何让一个 pthread 向另一个 pthread 发出信号,表明它可以继续执行?

c - tcsh 时间和 makefile 时间明显不同

c++ - 偏特化的默认参数

c++ - sched_getcpu 不工作

java - Java 中的 SwingWorker(初学者问题)

javascript - 将 JS 对象转换为 ArrayBuffer 以传输到/从 web worker 等于瓶颈

我可以从 Xenomai 实时任务访问非 RT 共享内存对象和互斥量吗?

c++ - 为什么我的程序在内存不足时偶尔会出现段错误而不是抛出 std::bad_alloc?