【发布时间】:2013-12-26 19:41:49
【问题描述】:
有谁知道一个条件变量类,它允许按照线程开始等待的顺序通知等待条件的线程?
我目前正在使用 boost 类 condition_variable,但调用 condition_variable::notify_one() 会唤醒一个随机线程,而不是首先调用 condition_variable::wait() 的线程。我还尝试在调用condition_variable::wait() 之前将线程ID 添加到队列中,这样我就可以调用condition_variable::notify_all(),此时所有等待的线程都会唤醒,检查队列并再次等待或继续(只有一个线程,即第一个线程队列)。问题是调用notify_all() 两次并不能保证所有线程都被唤醒两次,从而丢失通知。有什么建议吗?
【问题讨论】:
标签: c++ multithreading condition-variable