SDL Library Documentation
Prev |  | Next

# SDL_SemWait

## Name

SDL_SemWait -- Lock a semaphore and suspend the thread if the semaphore value is zero.

## Synopsis

    #include "SDL.h"
    #include "SDL_thread.h"

``int SDL_SemWait`(SDL_sem *sem);`

## Description

`SDL_SemWait()` suspends the calling thread until either the semaphore pointed to by `sem` has a positive value, the call is interrupted by a signal or error. If the call is successful it will atomically decrement the semaphore value.

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

## Return Value

Returns 0 if successful or -1 if there was an error (leaving the semaphore unchanged).

## Examples

    if (SDL_SemWait(my_sem) == -1) {
            return WAIT_FAILED;
    }

    ...

    SDL_SemPost(my_sem);

## See Also

`SDL_CreateSemaphore`, `SDL_DestroySemaphore`, `SDL_SemTryWait`, `SDL_SemWaitTimeout`, `SDL_SemPost`, `SDL_SemValue`

Prev | Home | Next
SDL_DestroySemaphore | Up | SDL_SemTryWait