The CoreCLr implementation was introduced in https://github.com/dotnet/runtime/pull/35597 The fence must be an intrinsic. - on architectures with strong memory ordering (i.e. x64) act as a compiler fence that prevents reordering optimizations. - on architectures with weak memory ordering also emit an ordering instruction (i.e. `dmb ishld` on arm64) Also consider: https://github.com/dotnet/runtime/issues/35761