Try to lock a mutex without blocking.
Defined in <SDL3/SDL_mutex.h>
mutex | the mutex to try to lock |
Returns 0 or SDL_MUTEX_TIMEDOUT
This works just like SDL_LockMutex(), but if the mutex is not available, this function returns SDL_MUTEX_TIMEDOUT
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.
This function does not fail; if mutex is NULL, it will return 0 immediately having locked nothing. If the mutex is valid, this function will always either lock the mutex and return 0, or return SDL_MUTEX_TIMEOUT and lock nothing.
This function is available since SDL 3.0.0.
int status;
SDL_Mutex *mutex;
mutex = SDL_CreateMutex();
if (!mutex) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create mutex\n");
return 1;
}
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);