C ++ 0xのアトミックテンプレートの実装
-
22-08-2019 - |
質問
私はインテルのTBBで同様のテンプレートが終了するが、それ以外にも、私はグーグルやBoostライブラリ内の任意の実装を見つけることができないことを知っています。
解決
あなたがそこにブーストでこの機能の実装についての議論を見つけることができます:ます。http: //lists.boost.org/Archives/boost/2008/11/144803.phpする
> N2427することができます - C ++原子の種類と操作が実装されます。
>コンパイラの助けなし?
はありません。
あなたは、インラインアセンブラ(またはのために別々にコンパイルされたアセンブラを書くことができる場合は、彼らは、組み込み関数である必要はありません。 そのことについては)あなたが書くことができます 直接操作そのもの。君は でも、簡単なCを使用することができるかもしれません++ 負荷のための(例えば、単なる割り当て またはストア)。あなたが必要とする理由 コンパイラのサポートが防止されます 不適切な最適化:原子 操作がアウト最適化することができない、と 一般的に並べ替えてはいけません 前または任意の他の操作の後。 これはさえ非アトミックことを意味します 原子の前に行わ店 店は完全である必要があり、することができず、 (例えば)レジスタにキャッシュされます。 また、ロードした後に発生すること アトミック操作を掲揚することができません アトミックオペアンプの前に。一部では ただ、インラインアセンブラを使用して、コンパイラ、 十分です。他人に、呼び出し 外部関数は十分です。 MSVC 提供 コンパイラの順序を提供するために、_ReadWriteBarrier()。他のコンパイラ 他のフラグを必要とします。