Использование Interlocked.Exchange для обновления ссылок и Int32

Известно, что ссылка занимает 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 и для ссылочных типов? Разве это нельзя сделать безопасно, просто используя простое присваивание, потому что оно атомарно?

17
задан Oleg Dudnyk 3 August 2011 в 14:46
поделиться