web-dev-qa-db-ja.com

MinGW 4.8.1 C ++ 11スレッドのサポート

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>_について文句を言わないので、なぜこのエラーが発生するのかわかりません。

16
newprogrammer

私がよく理解していれば、標準スレッドはまだmingwでサポートされていませんが、一部のmingw-w64ビルドはサポートしています。幸い、このバージョンのmingwを使用して32ビットアプリを構築することはできます。

これが ビルドへのリンク です。

10
slaadvak

Std :: threadおよびsyncプリミティブのネイティブwin32実装がすでにあります: https://github.com/meganz/mingw-std-threads これはヘッダーのみのライブラリであり、どのライブラリでも機能するはずです。 MinGWのC++ 11準拠バージョン。

9