Se sabe que una referencia toma 4 bytes de memoria en procesador de 32 bits y 8 bytes en procesador de 64 bits. Por lo tanto, los procesadores garantizan que las lecturas únicas y las escrituras en la memoria en incrementos del tamaño de palabra natural de la máquina se llevarán a cabo atómicamente. Por otro lado hay 2 métodos de la clase Interlocked:Uso de Interlocked.Exchange para la actualización de referencias e Int32
public static int Exchange(
ref int location1,
int value
)
y
public static T Exchange<T>(
ref T location1,
T value
)
where T : class
Entonces, la pregunta es ¿por qué es necesario para Interlocked.Exchange Int32 y para los tipos de referencia? ¿No podría hacerse de forma segura simplemente usando una asignación simple porque es atómica?
Muchas gracias. Está lo suficientemente claro ahora. –
Sé que esto es, obviamente, un año más tarde, pero si es posible, ¿podría por favor revisar esto? Este sitio web http://igoro.com/archive/volatile-keyword-in-c-memory-model-explained/ parece implicar que todas las escrituras en C# ya son volátiles. – user981225