【发布时间】:2020-02-29 18:49:51
【问题描述】:
ECMA CLI 规范定义了弱内存模型。这允许重新排序命令执行顺序(这对性能很有用)。但是为这样的模型编写低级代码非常困难。
最重要的是 - X86/AMD64 处理器架构具有更严格(强)的内存模型。因此,微软在其 CLR 实现中实现了比规范中描述的更强大的内存模型。
.NET Core 中的内存模型是否发生了变化?此框架可能可以在内存模型比 X86/AMD64 弱的架构上运行。
此外,.NET Core 还整合了 Mono 等。而且据我所知,Mono内存模型比较弱,对应ECMA。
在这篇文章Introducing .NET 5写道:
充分利用 .NET Core、.NET Framework、Xamarin 和 Mono,扩展 .NET 的功能。
所以我认为,如果不是现在,那么将来这些运行时将合并为一个整体。
文章下面是这样写的:
我们正在制作 CoreCLR 和 Mono 的替代品。我们将使它像构建切换一样简单,以便在不同的运行时选项之间进行选择。
如果我理解正确,将会有两个(或更多)运行时。而且可能每个人都会有自己的记忆模型。
我们在说什么:Memory Model。
【问题讨论】:
-
Related。底线:CoreCLR 并不认为自己受限于在 x86 上复制 CLR 的更强保证(公平地说,这在 ARM 上是不切实际的)。 (同时,没有动机在 x86 上故意偏离当前的 x86 模型。)
-
“.NET Core 合并了 Mono 和其他”需求链接参考。我不相信这是真的,因为 .NET Core CLR 和 Mono CLR 仍然是不同的东西。
-
@LexLi - 已更新。添加链接。
-
@Alexander Petrov 该链接涉及 2020 年即将推出的 .NET 5。.NET Core 和 Mono 仍然是不同的平台。