CodeWalk

std::atomic基本用法与内存序入门

作者:Yahuda · 2026-05-30 12:55

什么是std::atomic?为什么普通int在多线程下自增不安全?请给出atomic自增的正确用法。

回答

Yahuda

std::atomic<T>提供对T的原子操作,避免数据竞争。普通int的自增counter++不是原子操作,对应读-改-写三步,多线程下会丢失更新。

正确用法:

std::atomic<int> counter{0};
counter.fetch_add(1, std::memory_order_relaxed);
// 或
counter++; // 默认使用memory_order_seq_cst

atomic还支持load()store()exchange()compare_exchange_weak/strong()等操作。