#pragma section-numbers off #pragma camelcase off = SDL_SemTryWait = Use this function to see if a semaphore has a positive value and decrement it if it does. <> == Syntax == {{{#!highlight cpp int SDL_SemTryWait(SDL_sem* sem) }}} == Function Parameters == ||'''sem'''||the semaphore to wait on|| == Return Value == Returns 0 if the wait succeeds, SDL_MUTEX_TIMEDOUT if the wait would block, or a negative error code on failure; call [[SDL_GetError]]() for more information. == Code Examples == {{{#!highlight cpp SDL_atomic_t done; SDL_sem *sem; SDL_AtomicSet(&done, 0); sem = SDL_CreateSemaphore(0); . . Thread A: while (!SDL_AtomicGet(&done)) { add_data_to_queue(); SDL_SemPost(sem); } Thread B: while (!SDL_AtomicGet(&done)) { if (SDL_SemTryWait(sem) == 0 && data_available()) { get_data_from_queue(); } ... do other processing } . . SDL_AtomicSet(&done, 1); SDL_SemPost(sem); wait_for_threads(); SDL_DestroySemaphore(sem); }}} == Remarks == This function checks to see if the semaphore pointed to by '''sem''' has a positive value and atomically decrements the semaphore value if it does. If the semaphore doesn't have a positive value, the function immediately returns SDL_MUTEX_TIMEDOUT. == Related Functions == .[[SDL_CreateSemaphore]] .[[SDL_DestroySemaphore]] .[[SDL_SemPost]] .[[SDL_SemValue]] .[[SDL_SemWait]] .[[SDL_SemWaitTimeout]] ---- [[CategoryAPI]], [[CategoryMutex]]