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

28|浑然一体,一气呵成:atomic原子操作(上)

你好,我是鸟窝。
在前面的课程中我们学习了很多的同步原语,或者说用于并发的数据结构,你知道这些同步原语的基石是什么吗? 那就是原子操作:atomic。接下来的两节课我们就深入了解一下它的功能。
传统上,互斥锁(Mutex)、信号量(Semaphore)等同步原语被广泛用于保护共享资源的访问,确保在任何时刻只有一个线程能进入“临界区”(Critical Section)。虽然这些基于锁的机制相对容易理解和使用,但它们也可能引入性能瓶颈(如锁竞争导致的线程阻塞、上下文切换开销)和潜在的系统性问题(如死锁、优先级反转)。在高并发或对延迟要求极高的场景下,锁可能成为性能的掣肘。
为了应对这些挑战,原子操作(Atomic Operation)提供了一种更细粒度的并发控制方式。原子操作是不可分割的操作单元,它们要么完全执行,要么完全不执行,并且其执行过程不会被其他线程中断。现代处理器通常提供硬件指令(如 x86 架构的 LOCK 前缀指令,以及通用的比较并交换 Compare-and-Swap, CAS 指令)来高效地实现原子性。
基于这些原子操作,开发者可以构建非阻塞(Non-Blocking)或无锁(Lock-Free)的算法和数据结构,这些算法在某些条件下能够提供比传统锁更高的性能和更好的系统活性(Liveness)保证,例如避免死锁。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Rust 的所有权、借用系统以及 `Send` 和 `Sync` 标记 trait 在编译时就能消除许多潜在的数据竞争,而 Rust 标准库通过 `std::sync::atomic` 模块提供了一套丰富的原子类型和操作,强制开发者明确指定内存顺序,试图通过类型系统引导开发者作出更安全的选择。 2. Rust 的原子库不仅封装了底层的原子指令,更重要的是,它强制开发者明确指定内存顺序,将对并发行为的底层控制暴露给开发者的同时,也试图通过类型系统引导开发者作出更安全的选择。 3. Rust 的原子操作在并发编程中具有重要的作用,开发者可以通过了解原子操作的特性和使用方式,构建高性能和安全的并发程序。 4. Release、Acquire、AcqRel 和 SeqCst 等原子操作的特性和适用场景。 5. Rust 在其标准库中通过 `std::sync::atomic` 模块提供了一系列丰富的原子类型和操作,并强调内存顺序这一关键概念,以管理多线程环境下内存操作的可见性,这在编译器和硬件重排序以及不同架构的内存模型带来的复杂性下尤为重要。

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

精选留言

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