С11 Стандарт говорит, что для атомных типов (_Atomic), префикса и постфикса ++
и --
операций are atomic, как и сложные задания (6.5.2.4, p2.): op=
(6.5.16.2, р3) ,Атомарность простого оператора присваивания
Я ничего не написал о простом задании =
. Это также атомный?
Скажем, E1, E2: int
, но только E1 определяется спецификатором _Atomic. Мое предположение, что это:
E1 = E2;
эквивалентно:
atomic_store(&E1 , E2);
Это мое предположение верно?
Как этот _not_ быть атомарным. Какое состояние находится между «множеством» и «не установлено»? –
@WernerVanBelle Это с точки зрения Стандарта. Представьте себе абстрактную машину. – 2501
@WernerVanBelle On Atmel с avr-gcc, например, когда вы устанавливаете 16-битную переменную, сначала устанавливается старший байт, а младший байт. – Ctx