LOCK(2) LOCK(2) NAME lock - thread locking. SYNOPSIS include "lock.m"; lock := load Lock Lock->PATH; Semaphore: adt { c: chan of int; obtain: fn(s: self ref Semaphore); release: fn(s: self ref Semaphore); new: fn(): ref Semaphore; }; init: fn(); DESCRIPTION Lock provides semaphore-based mutual exclusion. Init must be called before creating any locks. Semaphore.new() Creates and returns a reference to a new Semaphore (lock). s.obtain() Obtains exclusive access to the lock s. It will block until it can do so. s.release() Releases access to the lock s and allows processes waiting on it to proceed. SOURCE /appl/lib/lock.b Page 1 Plan 9 (printed 11/23/24)