A means to manage access to a resource, by count, between threads.
Defined in <SDL3/SDL_mutex.h>
typedef struct SDL_Semaphore SDL_Semaphore;
Semaphores (specifically, "counting semaphores"), let X number of threads request access at the same time, each thread granted access decrementing a counter. When the counter reaches zero, future requests block until a prior thread releases their request, incrementing the counter again.
Wikipedia has a thorough explanation of the concept:
https://en.wikipedia.org/wiki/Semaphore_(programming)
This struct is available since SDL 3.1.3.