Comment garantir que les écritures 64 bits sont atomiques?

Quand peut-64-bits écritures être garanti d'être atomique, lors de la programmation en C sur un processeur Intel x86 plate-forme (en particulier, un Mac à processeur Intel fonctionnant MacOSX 10.4 en utilisant le compilateur Intel)? Par exemple:

unsigned long long int y;
y = 0xfedcba87654321ULL;
/* ... a bunch of other time-consuming stuff happens... */
y = 0x12345678abcdefULL;

Si un autre thread est en examinant la valeur de y après la première cession à y a fini de s'exécuter, je voudrais vous assurer qu'il voit soit la valeur 0xfedcba87654321 ou la valeur 0x12345678abcdef, et non pas un mélange d'entre eux. Je voudrais le faire sans aucun blocage, et si possible sans code supplémentaire. Mon espoir est que, lors de l'utilisation d'un compilateur 64 bits (64 bits Intel compilateur), sur un système d'exploitation capable de supporter de code 64 bits (MacOSX 10.4), que ces 64 bits écrit sera atomique. Est-ce toujours vrai?

source d'informationauteur