Specyfikacja interfejsu ECMA CLI definiuje słaby model pamięci. Pozwala to zmienić kolejność wykonywania poleceń (co jest przydatne dla wydajności). Ale pisanie kodu niskiego poziomu dla takiego modelu jest bardzo trudne.
A co najważniejsze - architektury procesorów X86 / AMD64 mają bardziej ścisły (mocny) model pamięci. W rezultacie Microsoft zaimplementował silniejszy model pamięci w swojej implementacji CLR niż opisano w specyfikacji.
Czy model pamięci zmienił się w .NET Core? Potencjalnie ten framework może działać na architekturach ze słabszym modelem pamięci niż X86 / AMD64.
Ponadto .NET Core zawiera Mono i inne. I o ile mi wiadomo, model pamięci Mono jest słabszy, odpowiada ECMA.
W tym artykule Wprowadzenie do .NET 5 napisano:
Rozszerz możliwości platformy .NET, wykorzystując to, co najlepsze w .NET Core, .NET Framework, Xamarin i Mono.
Myślę więc, że jeśli nie teraz, to w przyszłości środowiska wykonawcze połączą się w jedną całość.
Poniżej w artykule jest napisane:
Jesteśmy w trakcie wzajemnej wymiany CoreCLR i Mono. Ułatwimy wybór przełącznika kompilacji między różnymi opcjami środowiska wykonawczego.
Jeśli dobrze rozumiem, będą dwa (lub więcej) środowiska uruchomieniowe. I prawdopodobnie każdy będzie miał swój własny model pamięci.
O czym mówimy: Model pamięci .