SDL_SemWaitTimeout — Lock a semaphore, but only wait up to a specified maximum time.
#include "SDL.h" #include "SDL_thread.h"
int
SDL_SemWaitTimeout( |
SDL_sem * | sem, |
Uint32 | timeout) ; |
SDL_SemWaitTimeout
() is a
varient of SDL_SemWait
with a
maximum timeout value. If the value of the semaphore pointed
to by sem
is positive
(greater than zero) it will atomically decrement the
semaphore value and return 0, otherwise it will wait up to
timeout
milliseconds
trying to lock the semaphore. This function is to be avoided
if possible since on some platforms it is implemented by
polling the semaphore every millisecond in a busy loop.
After SDL_SemWaitTimeout
()
is successful, the semaphore can be released and its count
atomically incremented by a successful call to SDL_SemPost
.
Returns 0
if the semaphore
was successfully locked or either SDL_MUTEX_TIMEOUT
or -1 if the timeout period was
exceeded or there was an error, respectivly.
If the semaphore was not successfully locked, the semaphore will be unchanged.
res = SDL_SemWaitTimeout(my_sem, WAIT_TIMEOUT_MILLISEC); if (res == SDL_MUTEX_TIMEOUT) { return TRY_AGAIN; } if (res == -1) { return WAIT_ERROR; } ... SDL_SemPost(my_sem);
SDL_CreateSemaphore(3), SDL_DestroySemaphore(3), SDL_SemWait(3), SDL_SemTryWait(3), SDL_SemPost(3), SDL_SemValue(3)
COPYRIGHT |
---|
This manual page is taken from the SDL library, licensed under GNU LGPL. |