World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Файл SDL_mutex.h

См. исходные тексты.

Mutex functions

typedef struct SDL_mutex SDL_mutex
 
DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex (void)
 
DECLSPEC int SDLCALL SDL_LockMutex (SDL_mutex *mutex)
 
DECLSPEC int SDLCALL SDL_TryLockMutex (SDL_mutex *mutex)
 
DECLSPEC int SDLCALL SDL_UnlockMutex (SDL_mutex *mutex)
 
DECLSPEC void SDLCALL SDL_DestroyMutex (SDL_mutex *mutex)
 

Semaphore functions

typedef struct SDL_semaphore SDL_sem
 
DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore (Uint32 initial_value)
 
DECLSPEC void SDLCALL SDL_DestroySemaphore (SDL_sem *sem)
 
DECLSPEC int SDLCALL SDL_SemWait (SDL_sem *sem)
 
DECLSPEC int SDLCALL SDL_SemTryWait (SDL_sem *sem)
 
DECLSPEC int SDLCALL SDL_SemWaitTimeout (SDL_sem *sem, Uint32 ms)
 
DECLSPEC int SDLCALL SDL_SemPost (SDL_sem *sem)
 
DECLSPEC Uint32 SDLCALL SDL_SemValue (SDL_sem *sem)
 

Condition variable functions

typedef struct SDL_cond SDL_cond
 
DECLSPEC SDL_cond *SDLCALL SDL_CreateCond (void)
 
DECLSPEC void SDLCALL SDL_DestroyCond (SDL_cond *cond)
 
DECLSPEC int SDLCALL SDL_CondSignal (SDL_cond *cond)
 
DECLSPEC int SDLCALL SDL_CondBroadcast (SDL_cond *cond)
 
DECLSPEC int SDLCALL SDL_CondWait (SDL_cond *cond, SDL_mutex *mutex)
 
DECLSPEC int SDLCALL SDL_CondWaitTimeout (SDL_cond *cond, SDL_mutex *mutex, Uint32 ms)
 

Подробное описание

Functions to provide thread synchronization primitives.

См. определение в файле SDL_mutex.h

Типы

◆ SDL_mutex

typedef struct SDL_mutex SDL_mutex

См. определение в файле SDL_mutex.h строка 59

◆ SDL_sem

typedef struct SDL_semaphore SDL_sem

См. определение в файле SDL_mutex.h строка 107

◆ SDL_cond

typedef struct SDL_cond SDL_cond

См. определение в файле SDL_mutex.h строка 167

Функции

◆ SDL_CreateMutex()

DECLSPEC SDL_mutex* SDLCALL SDL_CreateMutex ( void  )

Create a mutex, initialized unlocked.

◆ SDL_LockMutex()

DECLSPEC int SDLCALL SDL_LockMutex ( SDL_mutex mutex)

◆ SDL_TryLockMutex()

DECLSPEC int SDLCALL SDL_TryLockMutex ( SDL_mutex mutex)

Try to lock the mutex

Возвращает
0, SDL_MUTEX_TIMEDOUT, or -1 on error

◆ SDL_UnlockMutex()

DECLSPEC int SDLCALL SDL_UnlockMutex ( SDL_mutex mutex)

◆ SDL_DestroyMutex()

DECLSPEC void SDLCALL SDL_DestroyMutex ( SDL_mutex mutex)

Destroy a mutex.

◆ SDL_CreateSemaphore()

DECLSPEC SDL_sem* SDLCALL SDL_CreateSemaphore ( Uint32  initial_value)

Create a semaphore, initialized with value, returns NULL on failure.

◆ SDL_DestroySemaphore()

DECLSPEC void SDLCALL SDL_DestroySemaphore ( SDL_sem sem)

Destroy a semaphore.

◆ SDL_SemWait()

DECLSPEC int SDLCALL SDL_SemWait ( SDL_sem sem)

This function suspends the calling thread until the semaphore pointed to by sem has a positive count. It then atomically decreases the semaphore count.

◆ SDL_SemTryWait()

DECLSPEC int SDLCALL SDL_SemTryWait ( SDL_sem sem)

Non-blocking variant of SDL_SemWait().

Возвращает
0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait would block, and -1 on error.

◆ SDL_SemWaitTimeout()

DECLSPEC int SDLCALL SDL_SemWaitTimeout ( SDL_sem sem,
Uint32  ms 
)

Variant of SDL_SemWait() with a timeout in milliseconds.

Возвращает
0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait does not succeed in the allotted time, and -1 on error.
Предупреждения
On some platforms this function is implemented by looping with a delay of 1 ms, and so should be avoided if possible.

◆ SDL_SemPost()

DECLSPEC int SDLCALL SDL_SemPost ( SDL_sem sem)

Atomically increases the semaphore's count (not blocking).

Возвращает
0, or -1 on error.

◆ SDL_SemValue()

DECLSPEC Uint32 SDLCALL SDL_SemValue ( SDL_sem sem)

Returns the current count of the semaphore.

◆ SDL_CreateCond()

DECLSPEC SDL_cond* SDLCALL SDL_CreateCond ( void  )

Create a condition variable.

Typical use of condition variables:

Thread A: SDL_LockMutex(lock); while ( ! condition ) { SDL_CondWait(cond, lock); } SDL_UnlockMutex(lock);

Thread B: SDL_LockMutex(lock); ... condition = true; ... SDL_CondSignal(cond); SDL_UnlockMutex(lock);

There is some discussion whether to signal the condition variable with the mutex locked or not. There is some potential performance benefit to unlocking first on some platforms, but there are some potential race conditions depending on how your code is structured.

In general it's safer to signal the condition variable while the mutex is locked.

◆ SDL_DestroyCond()

DECLSPEC void SDLCALL SDL_DestroyCond ( SDL_cond cond)

Destroy a condition variable.

◆ SDL_CondSignal()

DECLSPEC int SDLCALL SDL_CondSignal ( SDL_cond cond)

Restart one of the threads that are waiting on the condition variable.

Возвращает
0 or -1 on error.

◆ SDL_CondBroadcast()

DECLSPEC int SDLCALL SDL_CondBroadcast ( SDL_cond cond)

Restart all threads that are waiting on the condition variable.

Возвращает
0 or -1 on error.

◆ SDL_CondWait()

DECLSPEC int SDLCALL SDL_CondWait ( SDL_cond cond,
SDL_mutex mutex 
)

Wait on the condition variable, unlocking the provided mutex.

Предупреждения
The mutex must be locked before entering this function!

The mutex is re-locked once the condition variable is signaled.

Возвращает
0 when it is signaled, or -1 on error.

◆ SDL_CondWaitTimeout()

DECLSPEC int SDLCALL SDL_CondWaitTimeout ( SDL_cond cond,
SDL_mutex mutex,
Uint32  ms 
)

Waits for at most ms milliseconds, and returns 0 if the condition variable is signaled, ::SDL_MUTEX_TIMEDOUT if the condition is not signaled in the allotted time, and -1 on error.

Предупреждения
On some platforms this function is implemented by looping with a delay of 1 ms, and so should be avoided if possible.