admin管理员组

文章数量:1599542

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;
}

本文标签: 返回值stlWindowswaitforconditionvariable