MinGWのバージョンを公式Webサイトからダウンロードしました: http://sourceforge.net/projects/mingw/files/ そしてそれを私のWindows7マシンにインストールしました。
_g++ --version
_を実行するとg++.exe (GCC) 4.8.1
が得られ、GCC4.8.1はスレッドを含むC++ 11機能をサポートしていると思います。
_g++ -std=c++11 main.cpp
_を実行すると、次のプログラムが正常にコンパイルされます。
_//main.cpp
#include <memory>
int main() {
std::unique_ptr<int> a(new int);
return 0;
}
_
ただし、次のプログラムで_g++ -std=c++11 main.cpp
_を実行します。
_//main.cpp
#include <mutex>
int main() {
std::mutex myMutex;
return 0;
}
_
エラーが発生します:
_main.cpp: In function `int main()`:
main.cpp:5:5: error: 'mutex' is not a member of 'std'
std::mutex myMutex;
^
main.cpp:5:16: error: expected ';' before 'myMutex'
std::mutex myMutex;
^
_
_<mutex>
_がサポートされていないかのように。コンパイラは_#include <mutex>
_について文句を言わないので、なぜこのエラーが発生するのかわかりません。
私がよく理解していれば、標準スレッドはまだmingwでサポートされていませんが、一部のmingw-w64ビルドはサポートしています。幸い、このバージョンのmingwを使用して32ビットアプリを構築することはできます。
これが ビルドへのリンク です。
Std :: threadおよびsyncプリミティブのネイティブwin32実装がすでにあります: https://github.com/meganz/mingw-std-threads これはヘッダーのみのライブラリであり、どのライブラリでも機能するはずです。 MinGWのC++ 11準拠バージョン。