我正在使用.Net 4.5(预览... 4 就这个问题而言很好)。我正在做线程工作。
根据我的研究,我知道 x86 CPU 具有强大的内存模型,这意味着写入不会被重新排序。这使得释放锁是安全的。对于内存模型较弱的 Itanium CPU 而言,情况并非如此。
我了解易失性、内存障碍和执行重新排序原则。
理想情况下,如果CPU 是 Itanium,我需要在关键点插入内存屏障,但如果它是 x86,则不需要。是否可以动态地执行此操作,就像 JIT 处理的运行时编译器指令一样?
如果没有,我意识到我需要为这两个平台分别构建。在这种情况下,在没有 2 组 C# 文件的情况下执行此操作的最优雅方法是什么,而只需更改目标?