No he podido encontrar ninguna referencia al respecto en la documentación ...¿La asignación de variables y la lectura de la operación atómica?
¿Está asignando a un doble (o cualquier otro tipo simple, incluido booleano) una operación atómica vista desde la perspectiva de los hilos?
double value = 0;
public void First() {
while(true) {
value = (new Random()).NextDouble();
}
}
public void Second() {
while(true) {
Console.WriteLine(value);
}
}
En este ejemplo de código, primero método es llamado en un hilo, y la segunda en otro. ¿Puede el segundo método obtener un valor desordenado si obtiene su ejecución durante la asignación a la variable en otro hilo?
No me importa si recibo el valor anterior, solo es importante recibir un valor válido (no uno en el que se establecen 2 de 8 bytes). Sé que es una pregunta estúpida, pero quiero estar seguro, porque no sé cómo CLR realmente establece las variables.
Esta no es una pregunta estúpida. –
@EricLippert Objeto a = 10; ¿Es esta una operación atómica también? He leído MSDN, sus artículos, etc. Pero parece que no puedo encontrar una respuesta. ya que implica 2 pasos. boxeo y asignación – Ehsan
@NoOne: la mutación de la variable 'a' es atómica porque' object' es un tipo de referencia. El boxeo no entra en eso. –