C#:x86-x64 内存模型与 ECMA

标签 c# concurrency x86-64

我读过很多关于 C# 的 x86-x64、ARM、ECMA 内存模型之间的差异的文章。现实世界的最佳实践是什么:根据更强的 x86-x64 模型进行开发还是根据更弱的 ECMA 进行开发?我是否应该考虑仅在 x86-x64 硬件上运行的应用程序可能的重新排序、陈旧值、安全发布?

最佳答案

I've read a lot about differences between x86-x64, ARM, ECMA memory models for C#. What is the real world's best practice: developing according with stronger x86-x64 model or with weaker ECMA? Should I consider possible reordering, stale values, safe publishing for applications run only on x86-x64 hardware?

最佳实践是编写正确的代码。

我选择通过不编写多线程共享内存代码来编写正确的代码。我也鼓励您这样做。

如果您必须编写多线程共享内存代码,那么我建议您使用高级库,例如任务并行库,而不是试图理解内存模型的复杂性。

如果您想编写仅在强内存模型上正确的低级共享内存多线程代码,那么我无法阻止您,但这似乎需要大量工作才能创建一个当您尝试在 ARM 上运行该程序时,该程序会出现细微的错误。

关于C#:x86-x64 内存模型与 ECMA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21321251/

相关文章:

assembly - Mach-O 64位格式不支持32位绝对地址

c# - 在 ASP.Net Core Identity 中刷新用户 cookie 票证

c# - 将变量值和输出从 PL/SQL 代码块返回到 C#

c# - hostingEnvironment.ApplicationID 属性

c# - 以有限订阅者同时订阅可观察集合的简单方法

nhibernate - 流利的nhibernate自动映射版本列

python - POSTGRES - 具有多个连接的高效 SELECT 或 INSERT

c - 如何动态生成 X86_64 以返回相对于 RIP/RBP 的值

windows - 为什么 Windows64 使用与 x86-64 上的所有其他操作系统不同的调用约定?

c# - 在 C# 中解析 JSON