Semaphore (programming)
In computer science, a semaphore is a variable or abstract data type used to control access to a common resource that is being accessed by multiple threads and avoid critical section problems in a concurrent system such as a multitasking operating system. Semaphores are a type of synchronization primitive.