L’opération “++” est-elle atomique en C?

J’essaie de déterminer si une déclaration comme:

++value; //assuming "value" is a **global** variable 

est une opération atomique.

J’ai besoin de savoir si ce calcul peut être interrompu par une routine de service d’interruption qui écrit dans la même variable globale.

Sur les objects sans type atomique, standard ne définit jamais ++ comme une opération atomique.

C11 définit les types atomiques dans stdatomic.h. Si vous avez un object avec un type atomique, un opérateur postfixé et préfixe ++ définira une opération atomique comme suit : opération lecture-modification-écriture avec la sémantique d’ordre de mémoire memory_order_seq_cst.

Vous pouvez également utiliser atomic_fetch_add () si vous voulez un incrément atomique.