A synchronization Semaphore.
A synchronization Semaphore. Element used in multi-threadding. Initialized to zero on creation.
Lowers the [Semaphore], allowing one more thread in.
Tries to wait for the [Semaphore], if its value is zero, blocks until non-zero.