void concurrency::condition_variable::wait(mutex&m) { #ifdef _WIN32 m.unlock(); HANDLE handles[] = {cond_var.signal, cond_var.broadcast}; WaitForMultipleObjects(2, handles, false, INFINITE); m.lock(); #else pthread_mutex_t mtx = m.get_mutex(); pthread_cond_wait (&cond_var, &mtx); #endif }
virtual void wait(mutex &mut) { pthread_cond_wait(&this->pthcond, mut.get_mutex()); }
virtual void wait(mutex &mut) { ::SleepConditionVariableCS(&this->cv, mut.get_mutex(), INFINITE); }
virtual void wait(mutex &mut) { SDL_CondWait(this->sdlcond, mut.get_mutex()); }