SDL_SemWaitTimeout(3)

πŸ’– SDL_SemWaitTimeout πŸ’–

okay bestie, so this one's from the SDL API Reference and it lives in section 3 of the manual, iykyk β€” it's the ✨ timeout version ✨ of waiting on a semaphore. let's get into it πŸ¦‹


✨ NAME ✨

SDL_SemWaitTimeout β€” lock a semaphore, but only wait up to a specified maximum time. like, she's got places to be πŸ’…


🌸 SYNOPSIS 🌸

#include "SDL.h" #include "SDL_thread.h"

int SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout);

πŸŽ€ DESCRIPTION πŸŽ€

so SDL_SemWaitTimeout() is a varient of SDL_SemWait but with a max timeout value attached. the way it works is:

  • if the value of the semaphore pointed to by sem is positive (greater than zero), it will atomically decrement the semaphore value and return 0 🫢
  • otherwise, it will wait up to timeout milliseconds trying to lock the semaphore ⏳
ngl bestie, this function is to be avoided if possible 😭 because on some platforms it's implemented by polling the semaphore every millisecond in a busy loop. like it's just sitting there asking "is it ready yet? is it ready yet?" every single millisecond. exhausting. πŸ’€

after SDL_SemWaitTimeout() is successful, the semaphore can be released and its count atomically incremented by a successful call to SDL_SemPost ✨


⭐ RETURN VALUE ⭐

  • Returns 0 if the semaphore was successfully locked πŸŽ‰
  • Returns either SDL_MUTEX_TIMEOUT or -1 if the timeout period was exceeded or there was an error, respectivly πŸ™ˆ

if the semaphore was not successfully locked, the semaphore will be unchanged. no cap. 🧚


🌈 EXAMPLES 🌈

here's the vibe, bestie:

res = SDL_SemWaitTimeout(my_sem, WAIT_TIMEOUT_MILLISEC);

if (res == SDL_MUTEX_TIMEOUT) {
        return TRY_AGAIN;
}
if (res == -1) {
        return WAIT_ERROR;
}

...

SDL_SemPost(my_sem);

look at her go πŸ˜ŒπŸ‘‘


πŸ’œ SEE ALSO πŸ’œ

  • SDL_CreateSemaphore
  • SDL_DestroySemaphore
  • SDL_SemWait
  • SDL_SemTryWait
  • SDL_SemPost
  • SDL_SemValue

and that's the whole thing, bestie!! 🌸 this page is from SDL, dated Tue 11 Sep 2001, 23:00 β€” yes she's an old queen but she's still iconic πŸ‘‘πŸ’– mwah, go forth and semaphore responsibly πŸ¦‹βœ¨

πŸ“¦ where this page comes from