Frage

Ich weiß, dass ähnliche Vorlage Exits in Intel TBB, außer, dass ich keine Umsetzung auf Google oder in Boost-Bibliothek finden kann.

War es hilfreich?

Lösung

Sie können es Diskussionen über diese Funktion Umsetzung in boost finden: http: //lists.boost.org/Archives/boost/2008/11/144803.php

  

> Kann der N2427 - C ++ Atomic Arten und -funktionen implementiert werden

     

> ohne die Hilfe des Compilers?

     

Nein.

     

Sie müssen nicht intrinsics sein, wenn Sie Inline-Assembler schreiben kann (oder separat kompilierten Assembler für   dass die Materie), dann können Sie den Schreib   Operationen direkt selbst. Sie   vielleicht sogar in der Lage sein, einfache C ++   (Beispielsweise einfach nur Zuordnung für die Last   oder zu speichern). Der Grund, warum Sie brauchen   Compiler-Unterstützung verhindert   unangemessene Optimierungen: atomic   Operationen können nicht optimiert werden, und   Regel muss nicht mehr nachbestellt   vor oder nach einer anderen Operation.   Dies bedeutet, dass auch Nicht-Atom   Geschäfte vor einem Atomdurchgeführt   Speicher haben vollständig zu sein, und kann nicht   in einem Register zwischengespeichert wird (zum Beispiel).   Auch Belastungen, die auftreten, nachdem ein   Atom-Operation kann nicht hochgezogen werden,   vor dem Atom op. auf einigen   Compiler, nur Inline-Assembler   reicht. Auf anderen ruft ein   externe Funktion ist genug. MSVC   bietet   _ReadWriteBarrier () die Compiler Bestellung zu liefern. andere Compiler   müssen andere Flaggen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top