[ RCOS.java Home | RCOS Home | David's Home ]
Name: |
Lock |
Comment: |
The following class defines a "lock". A lock can be BUSY or FREE.
There are only two operations allowed on a lock:
Acquire -- wait until the lock is FREE, then set it to BUSY Release -- set lock to be FREE, waking up a thread waiting in Acquire if necessary In addition, by convention, only the thread that acquired the lock may release it. As with semaphores, you can't read the lock value (because the value might change immediately after you read it). |
Collaborators: |
class Lock { public: Lock(char* debugName); // initialize lock to be FREE ~Lock(); // deallocate lock char* getName() { return name; } // debugging assist void Acquire(); // these are the only operations on a lock void Release(); // they are both *atomic* bool isHeldByCurrentThread(); // true if the current thread // holds this lock. Useful for // checking in Release, and in // Condition variable ops below. private: char* name; // for debugging // plus some other stuff you'll need to define };