Когда можно гарантировать, что 64-битная запись будет атомарной при программировании на C на платформе на базе x86 на базе Intel (в частности, Mac на базе Intel, работающей под MacOSX 10.4 с использованием компилятора Intel)? Например:
unsigned long long int y;
y = 0xfedcba87654321ULL;
/* ... a bunch of other time-consuming stuff happens... */
y = 0x12345678abcdefULL;
Если другой поток проверяет значение y после завершения выполнения первого присваивания y, я хотел бы убедиться, что он видит либо значение 0xfedcba87654321, либо значение 0x12345678abcdef, а не некоторую смесь из них. Я хотел бы сделать это без блокировки и, если возможно, без дополнительного кода. Я надеюсь, что при использовании 64-битного компилятора (64-разрядного компилятора Intel) в операционной системе, поддерживающей 64-разрядный код (MacOSX 10.4), эти 64-битные записи будут атомарными. Это всегда так?