如果所有线程都忙,并且主线程发送了线程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个线程已经忙并且下一个信号已到达怎么办?
答案 0 :(得分:8)
无。信号消失了。
答案 1 :(得分:4)
如果您使用以下功能之一:
pthread_cond_signal
- 重新启动正在等待条件变量cond的其中一个线程。
pthread_cond_broadcast
- 唤醒被指定条件变量阻塞的所有线程。
手册说明
pthread_cond_broadcast()和pthread_cond_signal()函数 如果当前没有线程被阻止,则无效 COND。