gpt4 book ai didi

c++ - 当通知简历时,condition_variable::wait_for是否返回true

转载 作者:行者123 更新时间:2023-12-02 10:19:04 26 4
gpt4 key购买 nike

这是一个小代码段

request_ptr pop()
{
request_ptr rp;

std::unique_lock<std::mutex> lock(cv_mtx);
auto time = std::chrono::milliseconds(10000);
if (!cv.wait_for(lock, time, [this] { return !this->is_empty(); }))
{
return rp;
}

std::lock_guard<std::mutex> mtx_guard(mtx);
rp.reset(new request(std::move(requests.front())));
requests.pop();
return rp;
}

通知 wait_forcv的行为如何?
是否在不检查 true的返回值的情况下返回 is_empty
还是仅当 true返回 is_empty时才返回 true

最佳答案

根据[thread.condition.condvar]/36的电话...

cv.wait_for(lock, rel_time, pred);

相当于...
cv.wait_until(lock, chrono::steady_clock::now() + rel_time, std::move(pred));

相当于 in turn ...
while (!pred())
if (wait_until(lock, abs_time) == cv_status::timeout)
return pred();
return true;

因此, wait_for返回的值应为谓词返回的当前值。

关于c++ - 当通知简历时,condition_variable::wait_for是否返回true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61007439/

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