The
sem_post() function increments (unlocks) the semaphore pointed to by
sem. If there are threads blocked on the semaphore when
sem_post() is called, then the highest priority thread that has been blocked the longest on the semaphore will be allowed to return from
sem_wait().
sem_post() is signal-reentrant and may be called within signal handlers.