2012-11-03 3 views
11

窓用の最新のgcc 4.7.2コンパイラをダウンロードしたいと思っていました。私は、ダウンロードリンクをご覧になっていたこのpageに着いたとき
は、私は2つのカテゴリに直面:windowsのgccポートのthread_posixsとthread_win32の違いは?

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

いただきましこれらの違い二?
スレッドの実装のみですか?実装方法が異なるため、終了結果(クラス、使用方法など)は同じままですか?
または、特定のコーディングスタイルを適用していますか?

答えて

18

あなたが提供したリンクは、スタンドアロンのgcc 4.7.2 for windows、a.k.a mingw64のビルドにつながります。このコンパイラを構築するために、一連のスクリプトが使用され、コンパイルのオプションを定義するのに役立ちます。スクリプトは、単にMinGWのは、ビルドを呼ばれ、別の場所で見つけることができます:

スクリプトがために使用されるべきスレッドモデル指定オプションを持っていますstd :: threadsはC++ 11標準の一部です(これはGCCのそのバージョンに適用されたexperimental patchのおかげでMinGWに許されています)。 ある場合には、win32スレッドAPIが使用され、それ以外の場合は、使用されるposix APIが使用されます。

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

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

は、mingwのこのバージョンのために、スレッド、POSIXのリリースは、POSIX APIを使用してSTDの使用を許可する::スレッド、およびスレッド-win32のは、Win32 APIを使用し、無効になりますstd :: threadの標準の部分。

+2

(これは5.3.0以降でしか機能しないため)、https://github.com/meganz/mingw-std-threadsによって、std :: threadをwin32スレッドモデルで使用することができます。 –

関連する問題