Fix race while exiting
[stockfish] / src / thread.cpp
index 5f3b4d314bfb2b6edf27d65dec92b47d6dfafa96..9bd7498979761942ba0b0e01f315e2c444385c26 100644 (file)
@@ -76,11 +76,14 @@ void TimerThread::idle_loop() {
   while (!do_exit)
   {
       mutex.lock();
-      do sleepCondition.wait_for(mutex, msec ? msec : INT_MAX);
-      while (!msec && !do_exit); // Don't allow wakeups when msec = 0
+
+      if (!do_exit)
+          sleepCondition.wait_for(mutex, msec ? msec : INT_MAX);
+
       mutex.unlock();
 
-      check_time();
+      if (msec)
+          check_time();
   }
 }