RUST编程学习-碎片3-sync
目录前言一、原子类型二、锁三、屏障四、条件变量五、其他工具总结前言std::sync模块主要包含以下几类核心内容原子类型、锁、屏障、条件变量、其它工具……在做题的时候涉及到了相关知识点的掌握就此记录一、原子类型原子类型是实现无锁并发的基础。它们保证操作是原子的即不可分割不会因为线程切换而中断。AtomicBool: 布尔值的原子操作AtomicI8,AtomicI16,AtomicI32,AtomicI64,AtomicIsize: 有符号整数的原子操作AtomicU8,AtomicU16,AtomicU32,AtomicU64,AtomicUsize: 无符号整数的原子操作AtomicPtr: 指针的原子操作二、锁用于控制多个线程对共享资源的访问。Mutex(互斥锁):最常用的锁。它保证同一时间只有一个线程可以访问数据。它通过lock()方法返回一个MutexGuard智能指针通过 RAII 机制在离开作用域时自动释放锁。RwLock(读写锁):允许多个读取者或一个写入者。适用于“读多写少”的场景比Mutex并发性更高但逻辑更复杂三、屏障用于协调线程间的内存顺序确保编译器和 CPU 不会进行非法的指令重排。Barrier:阻塞一组线程直到所有线程都到达了屏障点。常用于确保所有线程都完成了某个阶段的计算后再一起进入下一阶段。OnceLock(在旧版本中是Once或lazy_static的替代品):用于实现全局的、只初始化一次的单例模式。它可以安全地被多个线程同时访问保证闭包只执行一次。四、条件变量用于线程间等待某个事件发生。Condvar:通常与Mutex配合使用。允许线程等待挂起一个条件并在另一个线程发出通知signal或广播broadcast时唤醒。五、其他工具Arc(虽然定义在std::sync但通常与Rc对应):Atomically Reference Counted原子引用计数。它是线程安全的Rc。允许多个线程共享同一个数据的所有权通过原子操作增加或减少引用计数。总结很频繁出现的一个知识点