pub fn lockSharedUncancelable(rl: *RwLock, io: Io) void
pub fn lockSharedUncancelable(rl: *RwLock, io: Io) void { var state = @atomicLoad(usize, &rl.state, .seq_cst); while (state & (is_writing | writer_mask) == 0) { state = @cmpxchgWeak( usize, &rl.state, state, state + reader, .seq_cst, .seq_cst, ) orelse return; } rl.mutex.lockUncancelable(io); _ = @atomicRmw(usize, &rl.state, .Add, reader, .seq_cst); rl.mutex.unlock(io); }