Вопрос плохо сформулирован, и, следовательно, путаница в ответах до сих пор.Вопрос должен звучать так: «Чтение и запись в переменную типа int? Гарантированно будет atomic ?»
Нет, абсолютно нет.Спецификация предельно ясна в этом отношении:
Чтения и записи следующих типов данных являются атомарными: bool, char, byte, sbyte, short, ushort, uint, int, float и ссылочные типы,Кроме того, чтение и запись перечислимых типов с базовым типом в предыдущем списке также являются атомарными.Чтение и запись других типов, включая long, ulong, double и decimal, а также определяемые пользователем типы, не гарантированно являются атомарными.
Поток может полностью прочитатьчастично записанное значение из переменной разделяемой памяти типа nullable.
Например, предположим, у вас есть int?переменная x, которая в настоящее время имеет значение null.Поэтому он содержит int, установленный в ноль, и bool, установленный в false.Теперь в другом потоке вы пишете обнуляемый int "5" в x.Совершенно законно, что другой поток считывает ненулевой int-ноль из x, потому что «true» в bool может быть установлено до того, как 5 будет установлено в int.