Semaphore used for synchronization of threads.
More...
#include <sync/semaphore.h>
|
| | Semaphore (unsigned c=0) |
| | Constructor; initialized the counter with provided value c
|
| |
| void | p () |
| | Wait for access to the critical area.
|
| |
| void | v () |
| | Leave the critical area.
|
| |
| | Waitingroom () |
| | Constructor.
|
| |
| virtual | ~Waitingroom () |
| | Destructor.
|
| |
| virtual void | remove (Thread *customer) |
| | Remove a given thread prematurely from the Waitingroom.
|
| |
| | Queue () |
| | Default constructor; initialized the queue as empty.
|
| |
| void | enqueue (T *item) |
| | Enqueues the provided item at the end of the queue.
|
| |
| T * | dequeue () |
| | Removes the first element in the queue and returns it.
|
| |
| Iterator | begin () |
| |
| Iterator | end () |
| |
| T * | remove (T *item, bool(*cmp)(T *, T *)=[](T *a, T *b) {return a==b;}) |
| | Removes and returns a single element from the queue.
|
| |
| void | insertFirst (T *item) |
| | Adds item to the beginning of the queue.
|
| |
| void | insertAfter (T *old_item, T *new_item) |
| | Inserts the element new_item directly after old_item.
|
| |
| T * | first () |
| | Returns the first element in the queue without removing it.
|
| |
| T * | next (T *o) |
| | Returns the next element in the queue for a given element.
|
| |
Semaphore used for synchronization of threads.
The class Semaphore implements the concept of counting semaphores. The waiting list is provided by the base class Waitingroom.
◆ Semaphore() [1/2]
◆ Semaphore() [2/2]
| Semaphore::Semaphore |
( |
unsigned |
c = 0 | ) |
|
|
inlineexplicit |
Constructor; initialized the counter with provided value c
- Parameters
-
◆ operator=()
◆ p()
Wait for access to the critical area.
Enter/Wait operation: If the counter is greater than 0, then it is decremented by one. Otherwise the calling thread will be enqueued into the Waitingroom and marked as blocked.
◆ v()
Leave the critical area.
Leave operation: If there are threads in the Waitingroom, wake the first one; otherwise increment the counter by one.
◆ counter
| unsigned Semaphore::counter |
|
private |
The documentation for this class was generated from the following files: