【发布时间】:2022-02-03 08:44:29
【问题描述】:
我对这两个功能有疑问:
当pthread_cond_signal 在pthread_cond_wait 之前调用时,信号到底在哪里结束?在某种队列中然后等待直到调用 pthread_cond_wait ?
我没有找到关于这件事的解释。
【问题讨论】:
我对这两个功能有疑问:
当pthread_cond_signal 在pthread_cond_wait 之前调用时,信号到底在哪里结束?在某种队列中然后等待直到调用 pthread_cond_wait ?
我没有找到关于这件事的解释。
【问题讨论】:
条件变量信号是edge events。这意味着,如果您在没有人等待的情况下发出 CV 信号,则该事件将被丢弃。这在official spec for pthread_cond_signal 中有详细说明:
如果当前没有线程阻塞在 cond 上,pthread_cond_broadcast() 和 pthread_cond_signal() 函数将无效。
(强调我的)
【讨论】: