La specifica CLI ECMA definisce un modello di memoria debole. Ciò consente di riordinare l'ordine di esecuzione del comando (utile per le prestazioni). Ma scrivere un codice di basso livello per un tale modello è molto difficile.
E, soprattutto, le architetture del processore X86 / AMD64 hanno un modello di memoria più rigoroso (forte). Di conseguenza, Microsoft ha implementato un modello di memoria più forte nella sua implementazione CLR rispetto a quanto descritto nelle specifiche.
Il modello di memoria è cambiato in .NET Core? Potenzialmente, questo framework può essere eseguito su architetture con un modello di memoria più debole rispetto a X86 / AMD64.
Inoltre, .NET Core incorpora Mono e altri. E per quanto ne so, il modello di memoria Mono è più debole, corrisponde all'ECMA.
In questo articolo Presentazione di .NET 5 scritto:
Espandi le funzionalità di .NET sfruttando il meglio di .NET Core, .NET Framework, Xamarin e Mono.
Quindi penso che se non ora, in futuro questi runtime si fonderanno in un unico insieme.
Di seguito nell'articolo è scritto:
Stiamo effettuando sostituzioni drop-in CoreCLR e Mono l'una per l'altra. Renderemo semplice quanto un interruttore di generazione per scegliere tra le diverse opzioni di runtime.
Se capisco correttamente, ci saranno due (o più) tempi di esecuzione. E probabilmente ognuno avrà il proprio modello di memoria.
Di cosa stiamo parlando: modello di memoria .