StuBS
|
Guarded interface to Semaphore objects used by user applications. More...
#include <guarded_semaphore.h>
Public Member Functions | |
GuardedSemaphore (int c) | |
The constructor passes the parameters to the base-class constructor. | |
void | p () |
Wait for access to the critical area. | |
void | v () |
Leave the critical area. | |
Public Member Functions inherited from Semaphore | |
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. | |
Public Member Functions inherited from Waitingroom | |
Waitingroom () | |
Constructor. | |
virtual | ~Waitingroom () |
Destructor. | |
virtual void | remove (Thread *customer) |
Remove a given thread prematurely from the Waitingroom. | |
Additional Inherited Members | |
Static Protected Member Functions inherited from Waitingroom | |
static Thread ** | getNext (Thread &th, unsigned i) |
Get the next thread of the queue. | |
Guarded interface to Semaphore objects used by user applications.
Implements the system call interface for class Semaphore. All methods provided by this class are wrappers for the respective method from the base class, which provide additional synchronization by using the class Guarded.
|
inline |
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.
|
inline |
Leave the critical area.
Leave operation: If there are threads in the Waitingroom, wake the first one; otherwise increment the counter by one.