1

条件变量是否有一个数字 - 与它相关联的信号的次数(如信号量)?即,如果五个线程向条件变量发出信号,并假设它们都被取消,那么条件变量是否有可能被其他五个线程等待,之后呢?或者,调用等待后是否只有一个线程解除阻塞?

4

1 回答 1

2

如果五个线程向条件变量发出信号,并假设它们都被取消,那么之后是否有可能让其他五个线程等待条件变量?

尽管这是非常特定于语言和实现的,但通常答案是没有数字。如果在没有任何线程等待条件的情况下发出条件信号,则信号将丢失。如果生成了 5 个信号,然后一个线程等待条件,它必须等待下一个信号被传递。

既然问题是关于 C 的(我假设是 POSIX 线程),那么我可以从pthread_cond_signal()手册中添加详细信息:

如果当前没有线程阻塞在 cond 上,pthread_cond_broadcast() 和 pthread_cond_signal() 函数将无效。

没有跟踪 POSIX 条件信号的计数器。

于 2013-04-05T18:24:31.480 回答