Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果没有线程在等待并且发送了条件信号,会发生什么?_C++_Pthreads - Fatal编程技术网

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

C++ 如果没有线程在等待并且发送了条件信号,会发生什么?,c++,pthreads,C++,Pthreads,如果所有线程都忙,并且主线程发送了线程cond信号,会发生什么情况 线程池中有1个主线程和3个pthread。3个pthread的状态为 pthread_mutex_lock(&sync_mutex); pthread_cond_wait(&sync_cond, &sync_mutex); pthread_mutex_unlock(&sync_mutex); 主线程已发送信号以唤醒线程以处理工作。在这种情况下,如果3个线程已经忙了,下一个

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

线程池中有1个主线程和3个pthread。3个pthread的状态为

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

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

什么都没有。信号消失。

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

pthread_cond_signal
-重新启动等待条件变量cond的一个线程。
pthread\u cond\u broadcast
-唤醒指定条件变量阻止的所有线程

手册上说

pthread_cond_broadcast()和pthread_cond_signal()函数 如果当前没有螺纹堵塞,则不会产生任何影响 康德


如果没有人在等待信号,信号将无效。或者你的意思是什么?我想知道它是否会等到线程可用时才停止,那么为了避免这种情况,你有什么建议来解决这个问题吗?如果你想记录信号的次数/计数,即使没有任何东西在等待,也要使用信号量。信号量具有计数、condvars事件等。不具有。信号量。。我会查一查的,谢谢。使用一个简单的队列来存储事件,并在线程可用时从中退出队列,怎么样?@Jae:condition变量表示条件发生了变化。接收线程必须等待条件变量,直到满足条件,这在使用队列时意味着等待,直到队列不为空(请参阅)。