Create a semaphore.
SDL_sem* SDL_CreateSemaphore(Uint32 initial_value);
the starting value of the semaphore
Returns a new semaphore or NULL on failure; call SDL_GetError() for more information.
This function creates a new semaphore and initializes it with the value
initial_value. Each wait operation on the semaphore will atomically decrement the semaphore value and potentially block if the semaphore value is 0. Each post operation will atomically increment the semaphore value and wake waiting threads and allow them to retry the wait operation.
This function is available since SDL 2.0.0.