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