标签: 指令重排

2 个内容

笔记(2)

编译器重排旨在优化程序,但非必现,受编译器、优化级别、代码依赖和硬件架构影响。为防止并发问题,需手动控制重排,如使用内存屏障、volatile、锁等。理解内存模型和同步原语至关重要。

Elliot Yang·
103 浏览

本文针对Go并发编程中懒汉式单例模式的重排问题,指出传统双重检查锁的隐患。推荐使用`sync.Once`保证线程安全和防止重排。同时,介绍了通过`atomic`手动实现的安全方案,强调了`atomic.Store/Load`屏障对防止指令重排的关键作用。

Elliot Yang·
95 浏览