Retourner au contenu associé (dépêche : De la nécessité d’adopter les opérations atomiques C11 ?)
Posté par Matthieu Moy (site web personnel) le 06 mars 2018 à 12:21. En réponse à la dépêche De la nécessité d’adopter les opérations atomiques C11 ?. Évalué à 2.
un appel à une fonction d'une bibliothèque est déjà une barrière complète pour le compilateur. Mais pas pour le CPU.
La bibliothèque peut très bien insérer les barrières à coups de __asm(). C'est ce que tout le monde faisait avant C/C++11.
__asm()
Par contre, si ce n'était qu'un problème de ré-ordonnancement par le compilateur, la gestion à coup de volatile suffirait.
Seulement si on est prêt à ruiner les perfs du programme. Cf. par exemple :
https://github.com/torvalds/linux/blob/master/Documentation/process/volatile-considered-harmful.rst
Les opérations atomiques permettent des barrières beaucoup plus fines (release, acquire, sequential consistency), donc beaucoup plus de contrôle sur les optimisations.
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: Réordonnancement étrange...
Posté par Matthieu Moy (site web personnel) . En réponse à la dépêche De la nécessité d’adopter les opérations atomiques C11 ?. Évalué à 2.
La bibliothèque peut très bien insérer les barrières à coups de
__asm(). C'est ce que tout le monde faisait avant C/C++11.Seulement si on est prêt à ruiner les perfs du programme. Cf. par exemple :
https://github.com/torvalds/linux/blob/master/Documentation/process/volatile-considered-harmful.rst
Les opérations atomiques permettent des barrières beaucoup plus fines (release, acquire, sequential consistency), donc beaucoup plus de contrôle sur les optimisations.