No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
# define lock_release(x) pthread_mutex_unlock(x)
# define lock_destroy(x) pthread_mutex_destroy(x)
# define cond_destroy(x) pthread_cond_destroy(x);
+# define cond_signal(x) pthread_cond_signal(x);
#else
# define lock_release(x) LeaveCriticalSection(x)
# define lock_destroy(x) DeleteCriticalSection(x)
# define cond_destroy(x) CloseHandle(*x);
+# define cond_signal(x) SetEvent(*x);
#endif
void ThreadsManager::wake_sleeping_thread(int threadID) {
- assert(threadID > 0);
- assert(threads[threadID].state == THREAD_AVAILABLE);
-
-#if !defined(_MSC_VER)
- pthread_mutex_lock(&WaitLock);
- pthread_cond_signal(&WaitCond[threadID]);
- pthread_mutex_unlock(&WaitLock);
-#else
- SetEvent(WaitCond[threadID]);
-#endif
+ lock_grab(&WaitLock);
+ cond_signal(&WaitCond[threadID]);
+ lock_release(&WaitLock);
}