The
sem_wait() function decrements (locks) the semaphore pointed to by
sem, but blocks if the value of
sem is zero, until the value is non-zero and the value can be decremented.
The
sem_trywait() function decrements (locks) the semaphore pointed to by
sem only if the value is non-zero. Otherwise, the semaphore is not decremented and an error is returned.