Известно, что ссылка занимает 4 байта памяти в 32-битном процессоре и 8 байтов - в 64-битном процессоре. Таким образом, процессоры гарантируют, что отдельные операции чтения и записи в память с шагом, равным естественному размеру слова машины, будут выполняться атомарно. С другой стороны, в классе Interlocked есть 2 метода:
public static int Exchange(
ref int location1,
int value
)
и
public static T Exchange<T>(
ref T location1,
T value
)
where T : class
Итак, вопрос в том, зачем Interlocked.Exchange нужен для Int32 и для ссылочных типов? Разве это нельзя сделать безопасно, просто используя простое присваивание, потому что оно атомарно?