我正在寻找重新排序代码的事情,甚至可能在多处理器的情况下破坏代码.
最重要的一个是内存访问重新排序.
如果没有内存屏障或序列化指令,处理器可以自由重新排序内存访问.某些处理器架构限制了它们可以重新排序的程度; Alpha被认为是最弱的(即可以重新排序最多的那个).
可以在Linux内核源文档的Documentation/memory-barriers.txt中找到对该主题的非常好的处理.
大多数情况下,最好使用编译器或标准库中的锁定原语; 这些都经过了充分的测试,应该具备所有必要的内存障碍,并且可能已经非常优化(优化锁定原语很棘手;即使是专家也可能有时会弄错它们).