====== (This is the documentation for SDL3, which is under heavy development and the API is changing! [https://wiki.libsdl.org/SDL2/ SDL2] is the current stable version!) ======
== Draft ==
'''THIS PAGE IS A WORK IN PROGRESS''' ... Please make edits to this page to improve it!
= SDL_TryLockMutex =
Try to lock a mutex without blocking.
== Syntax ==
int SDL_TryLockMutex(SDL_mutex * mutex) SDL_TRY_ACQUIRE(0, mutex);
== Function Parameters ==
{|
|'''mutex'''
|the mutex to try to lock
|}
== Return Value ==
Returns 0, [[SDL_MUTEX_TIMEDOUT]]
, or -1 on error; call
[[SDL_GetError]]() for more information.
== Remarks ==
This works just like [[SDL_LockMutex]](), but if the mutex is not
available, this function returns [[SDL_MUTEX_TIMEOUT]]
immediately.
This technique is useful if you need exclusive access to a resource but
don't want to wait for it, and will return to it to try again later.
== Version ==
This function is available since SDL 3.0.0.
== Code Examples ==
int status;
SDL_mutex *mutex;
mutex = SDL_CreateMutex();
if (!mutex) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create mutex\n");
return;
}
status = SDL_TryLockMutex(mutex);
if (status == 0) {
SDL_Log("Locked mutex\n");
SDL_UnlockMutex(mutex);
} else if (status == SDL_MUTEX_TIMEDOUT) {
/* Mutex not available for locking right now */
} else {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't lock mutex\n");
}
SDL_DestroyMutex(mutex);
== Related Functions ==
:[[SDL_CreateMutex]]
:[[SDL_DestroyMutex]]
:[[SDL_LockMutex]]
:[[SDL_UnlockMutex]]
----
[[CategoryAPI]], [[CategoryMutex]], [[CategoryDraft]]