其他语言似乎允许稍微更好地调整原子控制-即C ++的std :: atomic允许指定std :: memory_order,而Java的原子类具有诸如LazySet(例如参见[1])或PutOrderedLong(例如例如[2]),它允许仅使用栅栏/ sfence加载/存储值,并且-我相信-无需立即发布易失性值的保证。 据我了解,例如,使用sfence / LazySet可以确保确实在保护项之前执行/存储了先行存储(sfence,no lfence),尽管并没有任何明确的保证何时会发生。
C#是否提供类似功能的任何功能?即一种仅使用一种信息执行原子写入的方式,是否有任何可能在什么时候可见的时间上有宽松的约束/保证?
谢谢!
[1] http://psy-lob-saw.blogspot.com/2012/12/atomiclazyset-is-performance-win-for.html
[2] http://robsjava.blogspot.com/2013/06/a-faster-volatile.html