2017-01-17 7 views
0

現在、私は残念ながらBCC32 古本コンパイラ(主に信頼性とスピードの理由から)に結びついているC++ Builder 10.1.2の中規模プロジェクトに取り組んでいます。いくつかの背景を解析するための古典的なコンパイラでstd :: atomicやboost :: atomicを使用するには?

、私はC++ 11年代std::atomicを使用することができれば、それはいいだろうが、古典コンパイラは、そのすることはできません。たとえboost::atomicが付属していないBCC32に対しては、ブースト V.1.39のみをインストールできるため、boost::atomicも使用できません。

そう...

  • 古典コンパイラで新しいブーストバージョンを使用するには、いくつかの可能性はありますか?

  • ... ::atomic(mutex-wrapped 普通の変数を除く)の代替手段はありますか?

+12

なぜ11年前のコンパイラは、現在のものよりも信頼性が高く高速になると思いますか? –

+1

本、ツール、**ソフトウェアライブラリ**、チュートリアル**その他のオフサイトリソース**を推奨するかどうかを尋ねる質問はスタックオーバーフローのトピック外です –

+3

@Captain私はOPが求めているとは思わないしかし、ライブラリの推薦。あなたはそれを何と考えましたか? – Rakete1111

答えて

1

アセンブリにアクセスできる限り、ロックレスを自分で実装することができます。ちょうどあなたのCPUのための対応するアセンブリ命令を理解し、それらをコード化してください。これを行う簡単な方法は、最新のコンパイラを使用してCPU上でstd::atomicのテストコードをコンパイルし、生成されたASMを調べることです。もちろん、それはCPUに依存し、移植性を使用します。

コンパイラでASMを使用できない場合や、特定のCPUと結婚したくない場合は、OS提供のAPIに依存することができます。* nixとWindowsの両方にアトミック関数ファミリがあります。

関連する問題