Ear*_*ine 87 c++ multithreading g++ c++11
嗨,我正在尝试使用std::thread
G ++.这是我的测试代码
#include <thread>
#include <iostream>
int main(int, char **){
std::thread tt([](){ std::cout<<"Thread!"<<std::endl; });
tt.join();
}
Run Code Online (Sandbox Code Playgroud)
它编译,但当我尝试运行它时,结果是:
terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted
Aborted
Run Code Online (Sandbox Code Playgroud)
我的编译器版本:
$ g++ --version
g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Run Code Online (Sandbox Code Playgroud)
我的测试代码出了什么问题?
更新:我使用以下命令行来编译和运行我的代码.
$ g++ -std=c++0x test.cpp
$ ./a.out
Run Code Online (Sandbox Code Playgroud)
我试过
$ g++ -std=c++0x -lpthread test.cpp
$ ./a.out
Run Code Online (Sandbox Code Playgroud)
还是一样.
更新:以下编译命令有效.
#include <thread>
#include <iostream>
int main(int, char **){
std::thread tt([](){ std::cout<<"Thread!"<<std::endl; });
tt.join();
}
Run Code Online (Sandbox Code Playgroud)
hmj*_*mjd 99
我认为在Linux上使用pthread实现std::thread
所以你需要指定-pthread
编译器选项.
由于这是一个连接选项,这个编译器选项必须是AFTER源文件:
$ g++ -std=c++0x test.cpp -pthread
Run Code Online (Sandbox Code Playgroud)
小智 5
-std=c++11 -static -pthread -Wl,--whole-archive -lpthread -Wl,--no-whole-archive
一起工作-static
!!!
请参阅此处:https : //gcc.gnu.org/bugzilla/show_bug.cgi?id=52590#c4