[Windows +VS2019 +STL] Manejar el problema del valor de retorno inexacto de std::condition_variable::wait_for

La ejecución de wait_for() de std::condition_variable en Windows realmente se agotó, pero el valor de retorno dice que no se agotó, lo cual no es confiable.

La solución es agregar otro juicio, juzgando que GetLastError() == ERROR_TIMEOUT, es realmente una tontería

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

Supongo que te gusta

Origin blog.csdn.net/H_O_W_E/article/details/127541632
Recomendado
Clasificación