= 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]]