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