Wiki Page Content

Revision 4 as of 2010-09-09 20:38:42

Clear message

DRAFT

SDL_SemTryWait

Use this function to as a non-blocking variant of alternative to SDL_SemWait() -or- ...*to attempt to lock a semaphore but don't not suspend the thread*.

Syntax

int SDL_SemTryWait(SDL_sem* sem)

Function Parameters

sem

a pointer to the SDL_sem structure / semaphore to be decremented

Return Value

Returns 0 if the wait succeeds, SDL_MUTEX_TIMEDOUT if the wait would block, and -1 on error a negative error code on failure; call SDL_GetError() for more information.

-or-

*
green

Returns 0 if the semaphore was successfully locked (and decremented), SDL_MUTEX_TIMEDOUT if the thread would have suspended, or -1 if there was an error a negative error code on failure.

If the semaphore was not successfully locked, the semaphore will be unchanged.
*

Code Examples

*

res = SDL_SemTryWait(my_sem);

if (res == SDL_MUTEX_TIMEDOUT) {
        return TRY_AGAIN;
}
if (res == -1) {
        return WAIT_ERROR;
}

...

SDL_SemPost(my_sem);

*

Remarks

You can add useful comments here

*
SDL_SemTryWait() is a non-blocking variant of SDL_SemWait(). If the value of the semaphore pointed to by sem is positive it will atomically decrement the semaphore value and return 0, otherwise it will return SDL_MUTEX_TIMEDOUT instead of suspending the thread.

After SDL_SemTryWait() is successful, the semaphore can be released and its count atomically incremented by a successful call to SDL_SemPost().
*

green


CategoryAPI, CategoryMutex

(Page Info.)
Feedback
Please include your contact information if you'd like to receive a reply.
Submit