如果没有线程正在等待并且发送了条件信号会发生什么?

时间:2012-03-07 08:28:38

标签: c++ pthreads

如果所有线程都忙,并且主线程发送了线程cond信号,会发生什么?

线程池中有1个主线程和3个pthread。 3个pthreads处于

状态
    pthread_mutex_lock(&sync_mutex);
    pthread_cond_wait(&sync_cond, &sync_mutex);
    pthread_mutex_unlock(&sync_mutex);

主线程已发送Signal以唤醒线程以处理工作。在这种情况下,如果3个线程已经忙并且下一个信号已到达怎么办?

2 个答案:

答案 0 :(得分:8)

无。信号消失了。

答案 1 :(得分:4)

如果您使用以下功能之一:

pthread_cond_signal - 重新启动正在等待条件变量cond的其中一个线程。 pthread_cond_broadcast - 唤醒被指定条件变量阻塞的所有线程。

手册说明

  

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