Rust 同步原语

深入理解 Rust 的同步机制

Mutex

互斥锁是最基础的并发原语之一,用于保护共享数据。

let mutex = Mutex::new(0);
基础 同步原语

Condition Variables

用于线程等待特定条件成立。

let cvar = Condvar::new();
高级 同步原语

Barrier

同步屏障,确保多个线程在同一点同步后再继续执行。

let barrier = Barrier::new(3);
中级 同步原语

RwLock

读写锁允许多个读操作同时进行,但写操作需要独占访问。

let lock = RwLock::new(data);
中级 同步原语

Semaphore

计数信号量,用于控制对资源的并发访问数量。

let semaphore = Semaphore::new(3);
中级 同步原语

Once

确保某段代码只执行一次的同步原语。

static INIT: Once = Once::new();
中级 同步原语

Parking_lot

更紧凑、更高效的同步原语库,提供了标准库同步原语的替代实现。

let mutex = parking_lot::Mutex::new(0);
let guard = mutex.lock();
高级 同步原语

Event Listener

高效的、多生产者-多消费者的通知机制。

let event = Arc::new(Event::new());
let listener = event.listen();
event.notify(3); // 通知3个监听器
中级 同步原语

Triggered

一次性事件通知机制,用于跨线程或异步任务的触发控制。

let (trigger, listener) = Trigger::new();
listener.wait(); // 阻塞等待触发
trigger.trigger(); // 触发事件
中级 同步原语