gcc 4.4でコンパイルする必要があるマルチスレッドアプリケーションがありますが、私はC++ 0xフラグを使用できません。古いC++コンパイラのフェンシング
私は変数を原子的に動作させたいが、残念なことにC++ 0xフラグを使用しないでください。atomic<T>
をC++で使用できません。
私はboost::atomic
を試してみましたが、それは
ISO C++は、これらの条件の下で原子性を達成するための他の方法がありますがないタイプ
で「原子」の宣言をすることができ禁じ言って私にエラーを与えます私はフェンシングを使用します - もしそうなら、古いC++でフェンシングを達成するためのガイドやよく使われるコマンドがあります。
gc 4.4日で 'std :: mutex'がすでに存在していたことは間違いありません。それに失敗すると、POSIXミューテックスに常にフォールバックすることができます。 –
ほとんどのIntel/AMDプロセッサは、アトミックな動作(対応するビットのワード単位のアトミック動作)を提供します。 –
また、書き込みがすぐにフラッシュされ、読み取りがキャッシュから読み取られないことを確認する必要があります。 – user1918858