gpt4 book ai didi

c++ - condition_variable::wait_for 总是在等待?

转载 作者:太空宇宙 更新时间:2023-11-04 11:49:18 27 4
gpt4 key购买 nike

我在单元测试中有一些代码等待我的 vector 足够大:

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;

很简单。除了当我运行这个测试时,我期望在另一个线程上进行这个调用之后,有问题的 vector 应该在毫秒的数量级上填满。也许10ms,也许100ms,肯定在1s之内。但是当我将 5000 作为 millis 参数传递时,此函数总是 等待 5 秒。

一方面,这很好,因为我不在乎这个测试需要多长时间。另一方面,我认为只有在未通知条件变量的情况下才应该等待持续时间……并非总是如此?

有没有办法让它更早返回?

最佳答案

检查您是否确实在 ready 上调用信号或广播。如果您不小心,可能会在实际等待之前发出条件信号(这将导致等待直到超时)。

关于c++ - condition_variable::wait_for 总是在等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18992667/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com