Rust 并发编程实战课
晁岳攀(鸟窝)
前微博技术专家,知名微服务框架 rpcx 作者
579 人已学习
新⼈⾸单¥98
登录后,你可以任选4讲全文学习
课程目录
已更新 22 讲/共 38 讲
第四章:同步原语 (1讲)
Rust 并发编程实战课
15
15
1.0x
00:00/00:00
登录|注册

19|海纳百川,有容乃大:并发容器(上)

你好,我是鸟窝。
从这节课开始,我们将进入新的篇章,重点学习 Rust 中标准库的同步原语。
Rust 的同步原语体系丰富而强大,为了便于系统性理解,我们可以将其分为几种类型分别进行讲解。接下来这两节课将重点介绍容器类(或者叫做包装类)并发原语,它们的共同特点是通过对普通数据的包装,来提供更丰富的功能特性。这些容器包括 CowBoxCellRefCellOnceCellLazyCellRcArc 等。它们很多都不是线程安全的,但是常常会在并发程序中使用。
本节课的内容比较详细,内容很多,所以我分成两节课来介绍。
有些文章把它们叫做智能指针,我认为叫什么都不重要,重要的是我们能够了解它们并且能够熟练运用。
这些容器类并发原语各具特色:Cow(Clone-on-Write)提供了写时克隆的能力,可以在需要修改数据时才进行复制,从而优化性能;beef::Cow 则是对标准库 Cow 的一个优化实现。Box 作为 Rust 中最基础的智能指针,将数据存储在堆上;而 CellRefCell 则提供了内部可变性,使得我们能够在不可变引用的情况下修改数据。
在延迟初始化方面,OnceCellLazyCell 提供了不同层次的支持。OnceCell 确保值只被初始化一次;LazyCell 则在第一次访问时才进行初始化。在共享数据方面,Rc(引用计数)允许在单线程环境下安全地共享数据,而 Arc(原子引用计数)则通过原子操作提供了线程安全的共享机制,使得数据可以安全地在多个线程间传递和访问。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 并发容器是 Rust 中标准库的同步原语,提供了写时克隆、内部可变性、延迟初始化和共享数据等功能特性。 2. `Cow`(Clone-on-Write)是 Rust 标准库中提供的智能指针类型,通过 `Borrow` trait 处理通用的借用数据,提供写时复制功能。 3. `beef::Cow` 是一个比标准库 `Cow` 更快、更紧凑的实现,包含了两个版本的 `Cow`。 4. `Box` 是 Rust 标准库中最简单也是最常用的智能指针,提供了堆内存分配能力,零运行时开销,实现了 Deref/DerefMut 特质。 5. `Cell`、`RefCell`、`OnceCell` 和 `LazyCell` 是 Rust 中的同步原语,提供了内部可变性、延迟初始化和共享数据等功能特性。 6. `Cell<T>` 是 Rust 标准库中的类型,提供了一种在拥有不可变引用的同时修改其内部值的方法,适用于需要内部可变性的场景。 7. `RefCell` 是内部可变性类型的另一个实现,允许在不可变引用的情况下修改数据,适用于特定的数据结构和需要违反借用规则但仍保证安全的情况。 8. `RefCell<T>` 适用于需要内部可变性、单线程环境和运行时借用检查不够严格的场景。 9. `RefCell<T>` 提供了 borrow、borrow_mut、try_borrow、try_borrow_mut、as_ptr、into_inner 等方法,适用于特定的数据访问需求。 These key points summarize the main concepts and features of concurrent containers, smart pointers, and synchronization primitives in Rust, focusing on the functionalities and use cases of `Cow`, `Box`, `Cell`, and `RefCell`.

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Rust 并发编程实战课》
新⼈⾸单¥98
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部