Например, у меня есть следующий код:
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;
}
}
Есть ли накладные расходы?
wait_for
требуется аргумент продолжительности, поэтому я предполагаю, что вы имели в видуwait
во втором примере. В этом предположении оба примера ведут себя совершенно по-разному,wait
возможно, ожидая вечности... - person Aconcagua   schedule 23.10.2019