我在等待我的载体是足够大的单元测试一些代码:condition_variable :: wait_for总是等待?
bool waitForOutwardMessages(size_t size, int millis) {
std::unique_lock<std::mutex> lock(mutex);
return ready.wait_for(lock, std::chrono::milliseconds(millis), [=]{
return this->messages.size() >= size;
});
}
std::mutex mutex;
std::condition_variable ready;
很容易的。除了当我运行这个测试时,我期望在我在另一个线程上进行这个调用之后,有问题的向量应该填满毫秒级。也许10ms,也许100ms,肯定在1s内。但是当我通过5000作为millis
的参数时,这个函数总是等待5秒钟。
一方面,这很好,因为我不在乎这个测试需要多长时间。另一方面,我认为只有在条件变量未被通知的情况下,它才应该等待持续时间......并非总是如此?
有没有办法让它早点返回?
你准备好了吗?发送信号完全可能是因为wait_for调用被执行。 –
@JesusRamos是的,实际上是这样的:(我没有通知的一个案例是我在这里实际测试的一个案例谢谢!!我应该删除这个问题吗 – Barry
问题仍然有效,我可以 –