¿Son asignaciones de referencia y lectura de operaciones atómicas?
He encontrado varias preguntas sobre este mismo tema pero relacionadas con variables generales (valores y tipos de referencia) La respuesta aceptada deesta pregunt dice
Parte I, Sección 12.6.6 de las especificaciones de la CLI: "Una CLI conforme garantizará que el acceso de lectura y escritura a ubicaciones de memoria correctamente alineadas que no sea mayor que el tamaño de la palabra nativa sea atómico cuando todos los accesos de escritura a una ubicación sean iguales Talla."
Las variables de referencia (es decir, las clases) son punteros, iguales al tamaño de la palabra nativa, pero tengo algunas dudas:
Se garantiza que las referencias estén en ubicaciones de memoria correctamente alineadas?
No entiendo la última parte. ¿Qué significa esto? @ "... cuando todos los accesos de escritura a una ubicación son del mismo tamaño".
n resumen, ¿se garantiza que obj2 sea válido en cada iteración del bucle en el siguiente código?
class MyClass
{
private OtherClass m_Object;
void Thread1()
{
while(true)
{
OtherClass obj1 = new OtherClass();
m_Object = obj1;
}
}
void Thread2()
{
while (true)
{
OtherClass obj2 = m_Object;
// Is obj2 guaranteed to be valid?
obj2.Check();
}
}
}