Defines a mutually exclusive lock that can be used to coordinate with other threads.
Macros
SB_MUTEX_MAX_SIZE
Max size of the SbMutex type.
Enums
SbMutexResult
Enumeration of possible results from acquiring a mutex.
Values
kSbMutexAcquired
The mutex was acquired successfully.
kSbMutexBusy
The mutex was not acquired because it was held by someone else.
kSbMutexDestroyed
The mutex has already been destroyed.
Typedefs
SbMutex
An opaque handle to a mutex type with reserved memory buffer of size SB_MUTEX_MAX_SIZE and aligned at void pointer type.
Definition
typedef union SbMutex SbMutex
Functions
SbMutexAcquire
Acquires mutex
, blocking indefinitely. The return value identifies the
acquisition result. SbMutexes are not reentrant, so a recursive acquisition
blocks forever.
mutex
: The mutex to be acquired.
Declaration
SbMutexResult SbMutexAcquire(SbMutex *mutex)
SbMutexAcquireTry
Acquires mutex
, without blocking. The return value identifies the acquisition
result. SbMutexes are not reentrant, so a recursive acquisition has undefined
behavior.
mutex
: The mutex to be acquired.
Declaration
SbMutexResult SbMutexAcquireTry(SbMutex *mutex)
SbMutexCreate
Creates a new mutex. The return value indicates whether the function was able to create a new mutex.
out_mutex
: The handle to the newly created mutex.
Declaration
bool SbMutexCreate(SbMutex *out_mutex)
SbMutexDestroy
Destroys a mutex. The return value indicates whether the destruction was successful. Destroying a locked mutex results in undefined behavior.
mutex
: The mutex to be invalidated.
Declaration
bool SbMutexDestroy(SbMutex *mutex)
SbMutexIsSuccess
Indicates whether the given result is a success. A value of true
indicates
that the mutex was acquired.
result
: The result being checked.
Declaration
static bool SbMutexIsSuccess(SbMutexResult result)
SbMutexRelease
Releases mutex
held by the current thread. The return value indicates whether
the release was successful. Releases should always be successful if mutex
is
held by the current thread.
mutex
: The mutex to be released.
Declaration
bool SbMutexRelease(SbMutex *mutex)