A classic semaphore synchronization primitive.
A semaphore manages an internal counter which is decremented by each
acquire()call and incremented by each
release()call. The counter can never go below zero; when
acquire()finds that it is zero, it blocks, waiting until some other thread calls
Semaphore(int initial_count = 1)¶
Decrements the internal count. If the count was already at zero, blocks until the count is nonzero, then decrements it.
Returns the current semaphore count. Note that this call is not thread- safe (the count may change at any time).
output(std::ostream &out) const¶
Increments the semaphore’s internal count. This may wake up another thread blocked on
Returns the count of the semaphore upon release.
If the semaphore can be acquired without blocking, does so and returns true. Otherwise, returns false.