11

gcc 4.7.2Windows用のコンパイラの最新バージョンをダウンロードしたかったのです。ダウンロードリンクが表示されるはずのこのページにたどり着いたとき、私は2つのカテゴリに直面しました。

  1. スレッド-posix
  2. スレッド-win32

これら2つの違いは何ですか?それらはスレッド実装のみですか?つまり、実装方法が異なるだけなので、最終結果(クラス、使用方法など)は同じままですか?それとも、特定のコーディングスタイルを課していますか?

4

1 に答える 1

19

したがって、提供したリンクは、Windows用のスタンドアロンgcc 4.7.2、別名mingw64のビルドにつながります。このコンパイラを構築するために、コンパイルのオプションを定義するのに役立つ一連のスクリプトが使用されます。スクリプトは単に MinGW ビルドと呼ばれ、さまざまな場所にあります。

スクリプトには、C++11 標準の std::threads 部分に使用するスレッド モデルを指定するオプションがあります (これは、GCC のそのバージョンに適用された実験的なパッチのおかげで、MinGW で許可されています)。あるケースでは win32 スレッド API が使用され、別のケースでは使用されるのは posix API です。

Windows はそのままですべての POSIX API をサポートしているわけではないため、外部エミュレーション ライブラリ (winpthreads) を使用する必要があることに注意してください。

GCC ソース構成スクリプトには、その API (--enable-threads=) を指定するオプションがあり、それがビルド スクリプトで使用されます。

つまり、このバージョンの mingw では、threads-posix リリースは posix API を使用して std::thread の使用を許可し、threads-win32 は win32 API を使用し、std::thread の部分を無効にします。標準

于 2012-11-04T00:45:27.307 に答える