Update Ch15

This commit is contained in:
Unisko PENG 2023-05-10 15:48:24 +08:00
parent a57a626b1e
commit 4dbffe7348

View File

@ -627,9 +627,9 @@ $ cargo run
请将 `Rc<T>` 设想为客厅里的一台电视。在有人进来看电视时,他们会打开他。其他人可以进入客厅并观看电视。当最后一人离开客厅时,他们会关掉电视,因为他已不再被使用了。如果有人在其他人还在看电视的情况下关掉电视,剩下的看电视的人就会哗然!
咱们打算在内存堆上给咱们程序多个部分,分配用来读取的一些数据,且无法确定出,在编译时那些部分将最后用到这些数据时,咱们就会用到这个 `Rc<T>` 类型。若咱们清楚那个部分将最后结束,那么就可以只把那个部分,构造为该数据的所有者,同时在编译时强制用到的一般所有权规则,就能发挥作用
我们想在内存堆上分配一些数据给程序的多个部分读取,且无法在编译时确定哪个部分会最后使用完这些数据时,我们就会使用 `Rc<T>` 类型。如果我们知道哪个部分会最后完成,我们就可以让那个部分成为数据的所有者,而在编译时执行的正常所有权规则就会生效
请注意 `Rc<T>` 只适用于单线程的场景only for use in single-threaded scenarios。在第 16 章中讨论到并发时,就会讲到多线程程序中,怎样完成引用计数。
请注意 `Rc<T>` 仅适用于单线程场景only for use in single-threaded scenarios。当咱们在第 16 章中讨论并发时,咱们将接收如何在多线程程序中进行引用计数。
### 使用 `Rc<T>` 来共用数据