X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fthread.cpp;h=394e06980c7f83f1b9b30e810b016bd726e4ce81;hp=4c582e08d54645933dd2b8bd627938259faa2f5f;hb=cb1709ef5e6f96d8db44854b42b67fb524214717;hpb=8307da0de77c9c7bbf7c56a7d9c8a688ff4dfb4e diff --git a/src/thread.cpp b/src/thread.cpp index 4c582e08..394e0698 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -176,10 +176,10 @@ void ThreadsManager::init() { threads[i].threadID = i; #if defined(_MSC_VER) - threads[i].handle = CreateThread(NULL, 0, start_routine, (LPVOID)&threads[i], 0, NULL); + threads[i].handle = CreateThread(NULL, 0, start_routine, &threads[i], 0, NULL); bool ok = (threads[i].handle != NULL); #else - bool ok = !pthread_create(&threads[i].handle, NULL, start_routine, (void*)&threads[i]); + bool ok = !pthread_create(&threads[i].handle, NULL, start_routine, &threads[i]); #endif if (!ok) @@ -202,7 +202,7 @@ void ThreadsManager::exit() { // Wait for thread termination #if defined(_MSC_VER) - WaitForSingleObject(threads[i].handle, 0); + WaitForSingleObject(threads[i].handle, INFINITE); CloseHandle(threads[i].handle); #else pthread_join(threads[i].handle, NULL); @@ -452,7 +452,8 @@ void ThreadsManager::start_thinking(const Position& pos, const LimitsType& limit cond_signal(&main.sleepCond); // Wake up main thread and start searching if (!asyncMode) - cond_wait(&sleepCond, &main.sleepLock); + while (!main.do_sleep) + cond_wait(&sleepCond, &main.sleepLock); lock_release(&main.sleepLock); }