信号计数器在等待条件变量时

时间:2013-04-05 18:15:20

标签: c multithreading condition-variable

条件变量是否有一个数字 - 它与信号相关的信号的次数(如信号量)?即,如果五个线程发出条件变量信号,并假设所有条件都被取消,那么条件变量是否可以被其他五个线程等待,之后呢?或者,在调用wait之后只有一个线程会解锁吗?

1 个答案:

答案 0 :(得分:2)

  

如果五个线程发出条件变量的信号,并假设它们全部被取消,那么条件变量是否可以被其他五个线程等待,之后呢?

虽然这是特定于语言和实现的,但通常答案是一个数字。如果在没有的情况下发出的信号,那么任何线程都在等待该条件,那么信号就会丢失。如果生成5个信号然后线程等待该条件,则必须等待 next 信号被传递。

现在问题是关于C(我假设POSIX线程)然后我可以添加来自pthread_cond_signal() manual的详细信息:

  

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

没有计数器跟踪POSIX状态信号。