Cela dépend probablement de la bibliothèque atomique spécifique en question.
Une bonne bibliothèque avec un back-end spécifique aboutirait probablement à la même implémentation d'une paire d'instructions ASM pour émettre une instruction x86 lock et effectuer leur travail. Et en supposant que la bibliothèque elle-même est portable, faites ensuite votre code portable.
Une implémentation atomique naïve peut faire quelque chose de plus lourd comme utiliser un mutex pour protéger une variable normale. Je ne sais pas de tout ce que faire - juste faire le point pour l'argument. En tant que tel, compte tenu de vos exigences de non-portabilité, l'utilisation des fonctions Win32 devrait suffire. Alternativement, aller de l'avant avec une version atomique, mais peut-être regarder la mise en œuvre réelle.
Eh bien, par exemple, il y a TBB :: atomique d'Intel. Microsoft fournit le système d'exploitation, mais Intel produit le processeur. Qui feriez-vous plus confiance? –
Hehe, avez-vous confiance que le code Intel fonctionne bien sur un processeur AMD? –
Supposons que le code sera toujours exécuté sur un processeur Intel, ce qui est vrai dans mon cas. –