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;
- 2 回答
- 0 關注
- 144 瀏覽
添加回答
舉報
0/150
提交
取消