visual tipos studio significa referencia que por pasar parametros objetos numericas declarar datos como alfanumericas c# .net multithreading variable-assignment

c# - tipos - ¿La asignación de variables y la lectura de la operación atómica?



tipos de variables numericas en c# (1)

No pude encontrar ninguna referencia a esto en la documentación ...

¿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, el primer método se llama en un subproceso y el segundo 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.


Para responder a tu pregunta, no. No se garantiza que las asignaciones a dobles sean atómicas. Los documentos están disponibles here . Básicamente, los tipos incorporados <= 32 bits son atómicos,> = los tipos de 64 bits no lo son. Para operaciones atómicas en tipos de 64 bits, puede usar los métodos en System.Threading.Interlocked