Semaphore
[ A Semaphore is used to count resources. Either the number
of available items in a resource pool (has max count) or the number or remaining
tasks for a thread pool (no count limit). Semaphores cannot be automatically
cleaned up by the system. ]