lockShared
Blocks until shared lock ownership is acquired.
Function parameters
Parameters
- rwl:*SingleThreadedRwLock
Single-threaded applications use this for deadlock checks in
Types
- SingleThreadedRwLock
- Single-threaded applications use this for deadlock checks in
Attempts to obtain exclusive lock ownership.
Functions
- tryLock
- Attempts to obtain exclusive lock ownership.
- lock
- Blocks until exclusive lock ownership is acquired.
- unlock
- Releases a held exclusive lock.
- tryLockShared
- Attempts to obtain shared lock ownership.
- lockShared
- Obtains shared lock ownership.
- unlockShared
- Releases a held shared lock.
Source
Implementation
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
}
}