并发原语与无锁编程
Rust 并发底层实践:内存模型与 Ordering(Relaxed/Acquire/Release/AcqRel/SeqCst)语义、Mutex 与 RwLock 选型(std 与 parking_lot 对比)、Atomic 基础与 CAS 循环、无锁 SPSC 环形队列实现、ABA 与伪共享陷阱、何时该放弃无锁。
tag
Rust 并发底层实践:内存模型与 Ordering(Relaxed/Acquire/Release/AcqRel/SeqCst)语义、Mutex 与 RwLock 选型(std 与 parking_lot 对比)、Atomic 基础与 CAS 循环、无锁 SPSC 环形队列实现、ABA 与伪共享陷阱、何时该放弃无锁。
第 10 章的 worker pool 已经在并发读写同一份数据,但 store 还是裸 map,一压就 fatal error。本节讲清数据竞态,用 sync.Mutex 与 RWMutex 把 MemStore 改成并发安全,再用 atomic 计数器统计处理量,并给出四种同步手段的选型表。
Go 的 map 很好用,但普通 map 不是并发安全的。多个 goroutine 同时读写同一个 map,可能触发 fatal error,也可能产生数据竞争。初学者常常在 HTTP handler、缓存、在线用户列表里踩到这个问题。