Also known as
Create a lock which mediates access to a pool of resources.
Only a limited number of threads, specified at the creation
of the semaphore, can access the resources at any given time.
A semaphore which only allows one concurrent access to a resource
is called a binary semaphore.
Use a Semaphore when
- You have a pool of resources to allocate to different threads
- Concurrent access to a resource could lead to a race condition