boost::condition_variable cond;
boost::mutex mut;
bool ready = false;
void consumer() {
boost::mutex::scoped_lock lock(mut);
while (!ready) {
cond.wait(lock);
}
}
void producer() {
boost::mutex::scoped_lock lock(mut);
ready = true;
cond.notify_all();
boost::this_thread::sleep(boost::posix_time::seconds(4));
}
参考上面的代码,我在调用 notify_all() 后,实际上让生产者线程休眠了 4 秒。然而,消费者线程实际上在 4 秒后被唤醒。那么,尽管有 4 秒的睡眠,我如何才能解决这个问题并在调用 notify_all() 后立即唤醒消费者线程。提前致谢。