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