C ++ 0x mise en œuvre du modèle atomique
-
22-08-2019 - |
Question
Je sais que les sorties de modèles similaires dans TBB Intel, en plus que je ne peux pas trouver une application sur Google ou dans la bibliothèque Boost.
La solution
Vous trouverez des discussions au sujet de cette mise en œuvre des fonctionnalités là-dedans boost: http: //lists.boost.org/Archives/boost/2008/11/144803.php
> Peut-N2427 - C ++ Types et opérations atomiques mise en œuvre
> sans l'aide du compilateur?
Non.
Ils ne doivent pas nécessairement être intrinsics si vous pouvez écrire assembleur en ligne (ou assembleur compilé séparément pour cette question), vous pouvez écrire le les opérations elles-mêmes directement. Toi pourrait même être en mesure d'utiliser de simples C ++ (Affectation par exemple tout simplement pour la charge ou magasin). La raison pour laquelle vous avez besoin support du compilateur empêche optimisations inappropriés: atomique les opérations ne peuvent pas être optimisés sur et doit généralement pas reclassé avant ou après toute autre opération. Cela signifie que même non-atomique magasins effectuées avant un atomique magasin doivent être complets, et ne peut être mis en cache dans un registre (par exemple). , Les charges qui se produisent également après une opération atomique ne peut être hissée avant l'op atomique. Sur quelques compilateurs, tout en utilisant assembleur en ligne est assez. Sur d'autres, appelant une fonction externe est suffisante. MSVC fournit _ReadWriteBarrier () pour fournir la commande du compilateur. D'autres compilateurs besoin d'autres drapeaux.