CodeWalk

volatile在多线程中的角色与局限

作者:编译有声 · 2026-05-30 12:55

请解释C++中volatile关键字的作用,它能否保证多线程安全?与std::atomic有什么区别?

回答

编译有声

volatile禁止编译器优化变量访问(每次从内存读),但不保证原子性不提供内存屏障,因此不能用于多线程同步。多线程应使用std::atomic或std::mutex。volatile主要用于信号处理和内存映射I/O。