pub fn tryLockShared(rl: *RwLock, io: Io) bool
pub fn tryLockShared(rl: *RwLock, io: Io) bool { const state = @atomicLoad(usize, &rl.state, .seq_cst); if (state & (is_writing | writer_mask) == 0) { _ = @cmpxchgStrong( usize, &rl.state, state, state + reader, .seq_cst, .seq_cst, ) orelse return true; } if (rl.mutex.tryLock()) { _ = @atomicRmw(usize, &rl.state, .Add, reader, .seq_cst); rl.mutex.unlock(io); return true; } return false; }