2011-10-19 6 views
6

La especificación de C# dice que leer y escribir es atómico para tipos de 32 bits y más pequeños (así como para las referencias). Entonces, si tengo un campo Int32 en mi clase, sé que múltiples hilos pueden leer y escribir y serán atómicos en operación, por lo que el valor siempre será uniforme (aunque los problemas de caché son un problema potencial, pero ese no es el punto de esta pregunta).Tamaño de lectura/escritura atómica en sistemas de 64 bits para .NET?

¿Es esto lo mismo en sistemas de 64 bits también? Si compilo mi aplicación para 64 bits ¿eso significa que todavía se considera que un Int64 no es atómico? ¿O puedo considerar ahora que un Int64 es atómico en lectura/escritura porque se compila y se ejecuta en un sistema de 64 bits?

+1

En caso de duda, por supuesto, 'Interlocked' - pero es una muy buena pregunta. –

Respuesta

3

Debería ser el mismo (no atómico): los valores deben alinearse correctamente para permitir que los valores de 64 bits tengan lectura/escritura atómica, pero hasta donde sé no es necesario que CLR siempre alinee los valores Int64 .

Echa un vistazo a How to guarantee 64-bit writes are atomic? para tener alguna discusión sobre él.

Cuestiones relacionadas