Next: Special Notes
Up: Nachos Threads
Previous: Threads & Scheduling
Low-level Nachos routines (including the ones discussed above)
frequently disable and re-enable interrupts to achieve mutual
exclusion (e.g., by calling Interrupt::SetLevel()).
Synchronization facilities are provided through semaphores. The
Semaphore object provides the following operations:
- Semaphore(char* debugName, int initialValue)
- The constructor
creates a new counting semaphore having an initial value of
initialValue. The string debugName is also associated with
the semaphore to simplify debugging.
- void P()
- Decrement the semaphore's count, blocking the caller
if the count is zero.
- void V()
- Increment the semaphore's count, releasing one thread
if any are blocked waiting on the count.
Thomas Narten
Mon Feb 3 15:00:27 EST 1997