我注意到有时Rust会因为死锁而出现panic。
例如,以下代码会导致panic:
然而,这样做并不会成功(反而会导致死锁):
什么情况下Rust会发生panic而不是死锁?为什么会这样?
let rw_lock = RwLock::new(42);
{
let data0 = rw_lock.write().unwrap();
let data1 = rw_lock.read().unwrap();
let data2 = rw_lock.read().unwrap();
}
然而,这样做并不会成功(反而会导致死锁):
let rw_lock = RwLock::new(42);
{
let data1 = rw_lock.read().unwrap();
let data2 = rw_lock.read().unwrap();
let data3 = rw_lock.write().unwrap();
}
什么情况下Rust会发生panic而不是死锁?为什么会这样?