我有一个多线程应用程序,它必须在 SMP 环境中运行,我正在从多个线程写入(无读取-修改-写入)到单个(或字长)字节全局内存。我可以在不使用任何同步机制(互斥量、信号量、自旋锁)的情况下做到这一点吗?
我的猜测是:CPU 对对齐内存的内存读/写是原子的。所以不需要锁定原子访问内存。
但是存在内存排序问题,即内存对 CPU 的可见性顺序可能与访问内存的顺序不同。为了解决这个问题,我们需要内存屏障指令。我们可以在用户空间代码中使用内存屏障指令吗?如果不是,要解决内存排序问题,我们必须使用 murtex 或 spinlock 吗?