in src/sync/rwlock.rs [212:225]
fn block_waiters(state: &RwLockState, me: TaskId, typ: RwLockType) {
// Only block waiting readers if the lock is being acquired by a writer
if typ == RwLockType::Write {
for tid in state.waiting_readers.iter() {
assert_ne!(tid, me);
ExecutionState::with(|s| s.get_mut(tid).block());
}
}
// Always block any waiting writers
for tid in state.waiting_writers.iter() {
assert_ne!(tid, me);
ExecutionState::with(|s| s.get_mut(tid).block());
}
}