21 #include "../../SDL_internal.h" 23 #if SDL_THREAD_WINDOWS 27 #include "../../core/windows/SDL_windows.h" 49 sem->id = CreateSemaphoreEx(
NULL, initial_value, 32 * 1024,
NULL, 0, SEMAPHORE_ALL_ACCESS);
51 sem->id = CreateSemaphore(
NULL, initial_value, 32 * 1024,
NULL);
53 sem->count = initial_value;
89 dwMilliseconds = INFINITE;
91 dwMilliseconds = (DWORD) timeout;
93 switch (WaitForSingleObjectEx(sem->id, dwMilliseconds,
FALSE)) {
95 InterlockedDecrement(&sem->count);
128 return (
Uint32)sem->count;
142 InterlockedIncrement(&sem->count);
143 if (ReleaseSemaphore(sem->id, 1,
NULL) ==
FALSE) {
144 InterlockedDecrement(&sem->count);
int SDL_SemPost(SDL_sem *sem)
#define SDL_MUTEX_TIMEDOUT
#define SDL_MUTEX_MAXWAIT
int SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout)
int SDL_SemTryWait(SDL_sem *sem)
int SDL_SemWait(SDL_sem *sem)
#define SDL_OutOfMemory()
Uint32 SDL_SemValue(SDL_sem *sem)
GLbitfield GLuint64 timeout
void SDL_DestroySemaphore(SDL_sem *sem)
SDL_sem * SDL_CreateSemaphore(Uint32 initial_value)