Являются ли операторы "изменить" такими, как +=, |=, &= и т.д. atom?
Я знаю, что ++ является атомарным (если вы выполняете x++; в двух разных потоках одновременно), вы всегда окажетесь x увеличено на 2, а не x=x+1, при выключенной оптимизации).
Интересно, существует ли variable |= constant, а подобные - поточно-безопасные или мне нужно их защищать с помощью мьютекса?
(... или он зависит от процессора? В этом случае, как это делается на ARM?)