c - APUE<2nd> 11.4,先发信号或先解锁

标签 c multithreading unix

哪一个是正确的? 1.

pthread_mutex_lock
...
pthread_cond_broadcast
pthread_mutex_unlock

2.

pthread_mutex_lock
...
pthread_mutex_unlock
pthread_cond_broadcast

我知道第二个条件可能会在解锁广播期间发生变化。 但是第一个有什么问题。线程可以被阻塞吗? 是否有一些代码可以显示第一个中的问题? 谢谢

最佳答案

第一个序列工作正常。 pthread_cond_broadcast() 应在互斥体锁定后调用,并且必须解锁互斥体才能使 pthread_cond_wait() 例程完成。

您可以在此处找到更多说明:https://computing.llnl.gov/tutorials/pthreads/#ConVarOverview

关于c - APUE<2nd> 11.4,先发信号或先解锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30518855/

相关文章:

c - 打开具有连续文件名的文件

c# - 事件队列无法正常工作 winforms

c++ - 为什么使用 rand() 有更高数字的概率

linux - 比较文本文件中列出的文件

c++ - UDP 数据包时间戳

c - 确定 C 中 Z-lib 的压缩/未压缩缓冲区大小

c - C 中哈希表的时间复杂度

c - 将 type int 乘以 struct 时出错

java - 捕获正在运行的线程的异常

java - 完成线程 : should i ignore them?