var lock=Atomic.WriteLock(); lock.acquireForReading(); doSomeReading(); lock.readerRelease(); critical(lock,acquireForReading,readerRelease){ ... } lock.acquireForWriting(); write(); lock.writerRelease();