是否有人知道一个条件变量类,它允许通知等待条件的线程按照它们开始等待的顺序得到通知?
我目前正在使用boost类condition_variable,但是调用condition_variable::notify_one()会唤醒一个随机线程,而不是首先调用condition_variable::wait()的线程。我还尝试在调用condition_variable::wait()之前将线程in添加到队列中,以便调用所有等待线程唤醒的condition_variable::notify_all(),检查队列,然后再次等待或继续(只有一个线程,即队列中的线程优先)。问题是,两次调用notify_all()并不能保证所有线程都会被唤醒两次,从而丢失通知。有什么建议吗?
发布于 2013-12-26 19:45:40
奇怪的是,您要求线程按特定顺序被唤醒,并且听起来对您的设计表示怀疑。无论如何,您的想法是您可以拥有条件变量队列(每个线程一个),并且可以从队列顶部调用一个条件变量的notify_one()。在等待线程中,您需要执行额外的逻辑来检查它是否偶尔被等待中断。同样,听起来也很奇怪,为什么您需要线程按照特定的顺序唤醒,并且您可能需要重新考虑您的设计。
https://stackoverflow.com/questions/20790319
复制相似问题