$sem = new Thread::Semaphore([val])
Constructor. Creates a new semaphore object, with an optional initial
count of val, or 1 if
val isn't specified.
down [number]
Decrements the semaphore's count by the specified
number, which defaults to 1. If the resulting
count would be negative, blocks until the
semaphore's count has been increased to be equal to
or larger than the amount you want to decrease it.
up [number]
Increments the semaphore's count by the specified
number, which defaults to 1. If a thread is
blocked waiting to decrement the count, and the increment brings the
count high enough, the blocked thread is unblocked.