= SDL_CondWaitTimeout = Wait until a condition variable is signaled or a certain time has passed. == Syntax == int SDL_CondWaitTimeout(SDL_cond * cond, SDL_mutex * mutex, Uint32 ms); == Function Parameters == {| |'''cond''' |the condition variable to wait on |- |'''mutex''' |the mutex used to coordinate thread access |- |'''ms''' |the maximum time to wait, in milliseconds, or [[SDL_MUTEX_MAXWAIT]] to wait indefinitely |} == Return Value == Returns 0 if the condition variable is signaled, [[SDL_MUTEX_TIMEDOUT]] if the condition is not signaled in the allotted time, or a negative error code on failure; call [[SDL_GetError]]() for more information. == Remarks == This function unlocks the specified mutex and waits for another thread to call [[SDL_CondSignal]]() or [[SDL_CondBroadcast]]() on the condition variable cond, or for the specified time to elapse. Once the condition variable is signaled or the time elapsed, the mutex is re-locked and the function returns. The mutex must be locked before calling this function. == Version == This function is available since SDL 2.0.0. == Code Examples == SDL_bool condition = SDL_FALSE; SDL_mutex *lock; SDL_cond *cond; lock = SDL_CreateMutex(); cond = SDL_CreateCond(); . . Thread A: const Uint32 timeout = 1000; /* wake up every second */ while (!done) { SDL_LockMutex(lock); while (!condition && SDL_CondWaitTimeout(cond, lock, timeout) == 0) { continue; } SDL_UnlockMutex(lock); if (condition) { ... } ... do some periodic work } Thread B: SDL_LockMutex(lock); ... condition = SDL_TRUE; ... SDL_CondSignal(cond); SDL_UnlockMutex(lock); . . SDL_DestroyCond(cond); SDL_DestroyMutex(lock); == Related Functions == :[[SDL_CondBroadcast]] :[[SDL_CondSignal]] :[[SDL_CondWait]] :[[SDL_CreateCond]] :[[SDL_DestroyCond]] ---- [[CategoryAPI]], [[CategoryMutex]]