Merge pull request #935 from BH1SCW/main

fix: typo of Mutex
pull/937/head
Sunface 2 years ago committed by GitHub
commit f864cf8f98
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -191,7 +191,7 @@ Result: 10
现在我们又有了新的武器,由于`Mutex<T>`可以支持修改内部数据,当结合`Arc<T>`一起使用时,可以实现多线程的内部可变性。
简单总结下:`Rc<T>/RefCell<T>`用于单线程内部可变性, `Arc<T>/Mutext<T>`用于多线程内部可变性。
简单总结下:`Rc<T>/RefCell<T>`用于单线程内部可变性, `Arc<T>/Mutex<T>`用于多线程内部可变性。
#### 需要小心使用的 Mutex

@ -83,7 +83,7 @@ fn main() {
事实上,`Rc<T>` 是指向底层数据的不可变的引用,因此你无法通过它来修改数据,这也符合 Rust 的借用规则:要么存在多个不可变借用,要么只能存在一个可变借用。
但是实际开发中我们往往需要对数据进行修改,这时单独使用 `Rc<T>` 无法满足我们的需求,需要配合其它数据类型来一起使用,例如内部可变性的 `RefCell<T>` 类型以及互斥锁 `Mutex<T>`。事实上,在多线程编程中,`Arc` 跟 `Mutext` 锁的组合使用非常常见,它们既可以让我们在不同的线程中共享数据,又允许在各个线程中对其进行修改。
但是实际开发中我们往往需要对数据进行修改,这时单独使用 `Rc<T>` 无法满足我们的需求,需要配合其它数据类型来一起使用,例如内部可变性的 `RefCell<T>` 类型以及互斥锁 `Mutex<T>`。事实上,在多线程编程中,`Arc` 跟 `Mutex` 锁的组合使用非常常见,它们既可以让我们在不同的线程中共享数据,又允许在各个线程中对其进行修改。
#### 一个综合例子

Loading…
Cancel
Save