Function lockShared [src]
Blocks until shared lock ownership is acquired.
Prototype
pub fn lockShared(rwl: *SingleThreadedRwLock) void
Parameters
rwl: *SingleThreadedRwLock
Source
pub fn lockShared(rwl: *SingleThreadedRwLock) void {
switch (rwl.state) {
.unlocked => {
rwl.state = .locked_shared;
assert(rwl.shared_count == 0);
rwl.shared_count = 1;
},
.locked_shared => {
rwl.shared_count += 1;
},
.locked_exclusive => unreachable, // deadlock detected
}
}