pthread_cond_wait
允许我们等待,直到条件变量获得信号。如何等待任何条件变量?
但是,是否有机会等到两个条件变量中的任何一个发出信号?
我问的原因是我有以下情况:我有42个线程和两个可能的谓词,这些线程可能会继续他们的工作。如果满足这两个谓词中的任何一个,他们可以继续工作。
但是,问题是,当这些谓词中的一个被满足时,那么只有一个线程和一个特定的线程,而不是任何线程都可以继续工作。如果另一个满足,则应该恢复所有线程。
所以,我的想法是有一个条件变量,每当第二个pred被满足时被广播......还有另外42个条件变量,每个条件变量都与一个线程相关联。当第一个预测被实现时,它们中的适当的一个将被发信号通知。
但是,这需要线程唤醒时,只要有任何给定的cond变量被发信号通知...有什么机会实现这一点?
我认为43个线程是最简单的方法:一个用于大规模并行作业的42个线程的线程池和一个用于单线程作业的线程的“线程池”。或者可以使用一个信号量而不是一个条件变量,并将适当的次数发布到信号量。 –