所以我一直在尝试使用MinGW编译器在Windows上编译和运行以下代码。
#include <iostream>
#include <thread>
void test()
{
std::cout << "test" << std::endl;
}
int main()
{
std::thread t(test);
}
我正在使用以下命令进行编译:
g++ -std=c++11 test.cpp -o test.exe
现在问题是应该使用的MinGW版本,我已经尝试过我所知道的所有版本。
数字1不起作用,因为GCC apparently only supports在内部pthread内容。
Number 2确实编译,它基本上甚至输出test
(参见输出的最后一行),但它也会因错误而崩溃:
terminate called without an active exception
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
test
3号和4号再次进行编译,但它们不输出test
而是立即崩溃,但输出更具描述性:
terminate called after throwing an instance of 'std::system_error'
what(): Enable multithreading to use std::thread: Operation not permitted
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
谷歌当然把我带到了GCC bug tracker以及其他一些建议使用-pthread
的帖子,这些帖子根本没用。
我还尝试手动关联winpthread
和pthread
,但这也没有做任何事情。
-std=c++11
和-std=gnu++11
...
我现在真的迷路了,不知道,如果有可能得到支持std::thread
的MinGW版本,但也许我只是忽略了一些编译器标志。我希望有人可以帮助我!
答案 0 :(得分:10)
你忘了加入你的主题:
t.join();
答案 1 :(得分:3)
仅供参考,已有std :: thread和sync原语的本机win32实现。它是一个仅限标头的库,适用于任何符合C ++ 11标准的MinGW版本。 https://github.com/meganz/mingw-std-threads