Поддержка потока MinGW 4.8.1 С++ 11
Я загрузил версию MinGW с официального сайта: http://sourceforge.net/projects/mingw/files/ и установил ее на своей машине с Windows 7.
Запуск g++ --version
дает мне g++.exe (GCC) 4.8.1
, и я считаю, что GCC 4.8.1 поддерживает функции С++ 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>
, поэтому я понятия не имею, почему я получаю эту ошибку.
Ответы
Ответ 1
Если я хорошо понимаю, std threading по-прежнему не поддерживается в mingw, но некоторые сборки mingw-w64 поддерживают его. К счастью, вы все равно можете создавать 32-разрядные приложения, используя эту версию mingw.
Вот ссылка для сборки.
Ответ 2
Уже существует встроенная реализация win32 примитивов std:: thread и sync:
https://github.com/meganz/mingw-std-threads
Это библиотека только для заголовков и должна работать с любой версией MinGW, совместимой с С++ 11.