sunface / rust-course

“连续八年成为全世界最受喜爱的语言,无 GC 也无需手动内存管理、极高的性能和安全性、过程/OO/函数式编程、优秀的包管理、JS 未来基石" — 工作之余的第二语言来试试 Rust 吧。本书拥有全面且深入的讲解、生动贴切的示例、德芙般丝滑的内容,这可能是目前最用心的 Rust 中文学习教程 / Book
https://course.rs
24.92k stars 2.15k forks source link

RwLock 相关勘误 #1262

Closed lisongqian closed 12 months ago

lisongqian commented 1 year ago

RwLock同时读写会阻塞,不会直接panic。我的Rust版本是1.71。

原文的实例代码:

use std::sync::RwLock;

fn main() {
    let lock = RwLock::new(5);
    // 同一时间只允许一个写
    {
        let mut w = lock.write().unwrap();
        *w += 1;
        assert_eq!(*w, 6);

        // 以下代码会panic,因为读和写不允许同时存在
        // 写锁w直到该语句块结束才被释放,因此下面的读锁依然处于`w`的作用域中
        // let r1 = lock.read();
        // println!("{:?}",r1);
    }// 写锁在此处被drop
}
sunface commented 1 year ago

好的。。。如果可以的话,提个 PR也不错 :)