【Windows +VS2019 +STL】处理std::condition_variable::wait_for返回值不准的问题

Windows下执行std::condition_variable的wait_for(),实际超时了,但是返回值说没超时,不可靠。

解决方法是,再加一个判断,判断GetLastError() == ERROR_TIMEOUT,确实很扯淡

std::unique_lock<std::mutex> uniqueLock(cvMutex);

//Windows下执行condition_variable::wait_for(),实际超时了,但是返回值说没超时,不可靠。
std::cv_status status = cond_var.wait_for(uniqueLock, std::chrono::milliseconds(50));
if (status == std::cv_status::timeout || ::GetLastError() == ERROR_TIMEOUT) { //ERROR_TIMEOUT=1460
	continue;
}

猜你喜欢

转载自blog.csdn.net/H_O_W_E/article/details/127541632