私はMinGW-w64ツールチェーンをインストールする際にWin32スレッドモデルを選択しましたが、それはPOSIXのものよりも優れたパフォーマンスを提供します。私はこの主張をベンチマークする資格はありませんが、here's a source for itです。Win32スレッドモデルを使用する場合、MinGW-w64はstd :: threadをサポートしていますか?
最初に私は、仲間のユーザーrubenvbによってthis answerとthis commentに基づいて私のコードでC++ 11個のスレッドを、使用してから私を防止していない間、このオプションは、GCCランタイムの内部動作に影響を与えるだろうと思いました。
しかし、これはそうではないようです。 std::thread
のサポートは、このMinGW-w64インストールでは存在しないようです。
-std=c++11
以外のオプションを指定しないでコマンドラインからg ++を呼び出しています。 rubenvbが間違っていた、そしてそれが依存する私のコードをコンパイルするために、POSIXスレッドモデルの下でのMinGW-W64をインストールするには、実際には必要だ
- :私はかどうかわからないんだけど、この時点で
C++ 11
thread
ライブラリ、または、 - 私はそれを完全に誤解しました。
std::thread
実際に私のシナリオではサポートされていますが、それは直感的ではありません。
タイトルの「out of the box」部分を補強します。 this answerに示すように、mingw-std-threadsと呼ばれるライブラリが存在します。ただし、第三者の選択肢として、この質問には関係ありません。
現在、Win32の内部スレッドモデルでインストールされたMinGW-w64は、NativeDellyのstd::thread
コードに依存していますか?
リンクしているときにmingw-std-threadsをインストールすると約30秒かかります –
@ M.M ...提案をいただき、ありがとうございました。この質問は、主に好奇心やカノニティーのためです。情報はさまざまな情報源の間で異なるようです。 –
私の答えも私のコメントも間違っていません。それらはmingw-std-threadsライブラリが利用できなかった時に書かれました(少なくとも私はそれを知らなかった)。内部スレッドモデルがwin32に設定されているGCCは、C++ 11スレッド機能をサポートしていません。リンクした私の答えはちょうどこれを言う。私のコメントは、C++ 11スレッドのサポートについては言及していません。代わりに、内部スレッドモデルとしてwin32/posixで構築されたGCCを使って、pthreadやwin32スレッドに関連する関数を呼び出すことができます。これらは2つの非常に異なるトピックです。 – rubenvb