为了账号安全,请及时绑定邮箱和手机立即绑定

wait_for()超时之后,是继续阻塞;还是执行后续语句 ?

wait_for()超时之后,是继续阻塞;还是执行后续语句 ?

C++
小唯快跑啊 2023-03-03 14:10:23
std::unique_lock<std::mutex>my_lc(my_mutex);my_cond.wait_for(my_lc, std::chrono::milliseconds(10000));
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

根据c++源码看,超时后会退出阻塞,继续执行后续代码
template <class Rep, class Period>
cv_status wait_for (unique_lock<mutex>& lck,
const chrono::duration<Rep,Period>& rel_time);
return wait_until (lck,chrono::steady_clock::now() + rel_time, std::move(pred));
带谓词
template <class Rep, class Period, class Predicate>
bool wait_for (unique_lock<mutex>& lck,
const chrono::duration<Rep,Period>& rel_time, Predicate pred);
while (!pred())
if (wait_until(lck,abs_time) == cv_status::timeout) 
return pred();//超时后调用谓词并返回结果,true or false
return true;

 


查看完整回答
反对 回复 2023-03-06
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

如果没有获取到,仍然处于阻塞状态

查看完整回答
反对 回复 2023-03-06
  • 2 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信