Кажется, я вспоминаю, что реализации методов Thread.VolatileRead и Thread.VolatileWrite фактически вызывают полные заборы, а не половину заборов.
Это глубоко прискорбно, поскольку люди могли бы полагаться на это поведение неосознанно;возможно, они написали программу, которая требует полного забора, думают, что им нужен половинный забор, думают, что они получают половинный забор, и их ждет неприятный сюрприз, если реализация этих методов когда-либо даст половинный забор.
Я бы избегал этих методов.Конечно, я бы избегал всего, что связано с кодом с низкой блокировкой, не будучи достаточно умным, чтобы писать его правильно ни в чем, кроме самых тривиальных случаев.