Самым важным будет переупорядочение доступа к памяти.
При отсутствии ограждений памяти или инструкций сериализации процессор может изменить порядок доступа к памяти. Некоторые архитектуры процессоров имеют ограничения на то, сколько они могут переупорядочить; Альфа известна тем, что она самая слабая (то есть та, которая может переупорядочить больше всего).
Очень хорошее описание этой темы можно найти в исходной документации ядра Linux по адресу Documentation / memory-barriers.txt .
В большинстве случаев лучше использовать блокирующие примитивы из вашего компилятора или стандартной библиотеки; они хорошо протестированы, должны иметь все необходимые барьеры памяти и, вероятно, довольно оптимизированы (оптимизация блокирующих примитивов непроста; даже эксперты иногда могут их неправильно понять).