Function unlockShared [src]
Releases a held shared lock.
Prototype
pub fn unlockShared(rwl: *SingleThreadedRwLock) void
Parameters
rwl: *SingleThreadedRwLock
Source
pub fn unlockShared(rwl: *SingleThreadedRwLock) void {
switch (rwl.state) {
.unlocked => unreachable, // too many calls to `unlockShared`
.locked_exclusive => unreachable, // exclusively held lock
.locked_shared => {
rwl.shared_count -= 1;
if (rwl.shared_count == 0) {
rwl.state = .unlocked;
}
},
}
}