An integer or
A string or
A non-negative fixnum.
If decrementing the semaphore's unit count would result in a negative number, then
waits until the semaphore's unit count is larger than
and tries again. If
is true, then it is used as the thread's
when waiting for the semaphore.
can wait forever. If
is true, it should be an integer. If the semaphore count cannot be decremented within
returns false and the semaphore is unaffected. Pass
0 if you do not want to wait at all.