<> <> DIRECTORY PlotOps USING [Handle]; PlotMonitor: CEDAR MONITOR EXPORTS PlotOps = { OPEN PlotOps; Lock: PUBLIC ENTRY PROC [handle: Handle] = { ENABLE UNWIND => NULL; IF handle = NIL THEN RETURN; WHILE handle.locked DO WAIT handle.unlocked; ENDLOOP; handle.locked _ TRUE; }; -- Lock Unlock: PUBLIC ENTRY PROC [handle: Handle] = { <> ENABLE UNWIND => NULL; IF handle # NIL THEN { handle.locked _ FALSE; BROADCAST handle.unlocked; }; }; -- Unlock }.