RUST编程学习-碎片3-sync
2026/7/20 19:03:19 网站建设 项目流程

目录

前言

一、原子类型

二、锁

三、屏障

四、条件变量

五、其他工具

总结


前言

std::sync模块主要包含以下几类核心内容,原子类型、锁、屏障、条件变量、其它工具……

在做题的时候涉及到了相关知识点的掌握,就此记录


一、原子类型

原子类型是实现无锁并发的基础。它们保证操作是原子的,即不可分割,不会因为线程切换而中断。

  • AtomicBool: 布尔值的原子操作

  • AtomicI8,AtomicI16,AtomicI32,AtomicI64,AtomicIsize: 有符号整数的原子操作

  • AtomicU8,AtomicU16,AtomicU32,AtomicU64,AtomicUsize: 无符号整数的原子操作

  • AtomicPtr: 指针的原子操作

二、锁

用于控制多个线程对共享资源的访问。

  • Mutex(互斥锁):

    • 最常用的锁。它保证同一时间只有一个线程可以访问数据。

    • 它通过lock()方法返回一个MutexGuard(智能指针),通过 RAII 机制在离开作用域时自动释放锁。

  • RwLock(读写锁):

    • 允许多个读取者或一个写入者。

    • 适用于“读多写少”的场景,比Mutex并发性更高,但逻辑更复杂

三、屏障

用于协调线程间的内存顺序,确保编译器和 CPU 不会进行非法的指令重排。

  • Barrier:

    • 阻塞一组线程,直到所有线程都到达了屏障点。

    • 常用于确保所有线程都完成了某个阶段的计算后,再一起进入下一阶段。

  • OnceLock(在旧版本中是Oncelazy_static的替代品):

    • 用于实现全局的、只初始化一次的单例模式。

    • 它可以安全地被多个线程同时访问,保证闭包只执行一次。

四、条件变量

用于线程间等待某个事件发生。

  • Condvar:

    • 通常与Mutex配合使用。

    • 允许线程等待(挂起)一个条件,并在另一个线程发出通知(signal)或广播(broadcast)时唤醒。

五、其他工具

  • Arc(虽然定义在std::sync,但通常与Rc对应):

    • Atomically Reference Counted(原子引用计数)。

    • 它是线程安全的Rc。允许多个线程共享同一个数据的所有权,通过原子操作增加或减少引用计数。


总结

很频繁出现的一个知识点

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询