我正在阅读关于 volatile 关键字的这个问题的答案:
https://stackoverflow.com/a/2485177/997112
该人说:
防止重新排序的解决方案是使用内存屏障,它向编译器和 CPU 都表明,在这一点上不能对内存访问进行重新排序。在我们的 volatile 变量访问周围放置这样的障碍可以确保即使是非 volatile 访问也不会在 volatile 中重新排序,从而允许我们编写线程安全的代码。
但是,内存屏障还确保在达到屏障时执行所有挂起的读/写操作,因此它有效地为我们提供了我们需要的一切,从而使 volatile 变得不必要。我们可以完全删除 volatile 限定符。
这个“内存屏障”是如何在 C++ 中实现的?
编辑:
有人可以给出一个简单的代码示例吗?