【发布时间】:2020-02-19 08:03:24
【问题描述】:
例如我有下一个代码:
void waitForResponse(const std::optional<int64_t>& ms){
std::unique_lock lk{_mtx};
_cv.wait_for(lk, std::chrono::milliseconds{ms ? *ms : 0}, []() {
return someCondition;
}
}
如果我将0 作为持续时间参数传递,它是否在标准中指定?是否等于下一个代码?:
void waitForResponse(const std::optional<int64_t>& ms){
std::unique_lock lk{_mtx};
_cv.wait_for(lk, []() {
return someCondition;
}
}
有开销吗?
【问题讨论】:
-
尚未深入了解标准,但cppreference 并未提及任何具体行为。所以我们需要假设超时立即过去。然后
wait_for需要一个持续时间参数,所以我假设您打算在第二个示例中使用wait。在这种假设下,两个示例的行为完全不同,wait可能永远等待...... -
@Aconcagua 你完全正确。谢谢。
标签: c++ multithreading condition-variable stdthread