Sté*_*ane 44 c++ multithreading c++11
尝试编译以下示例g++ -std=gnu++0x t1.cpp,g++ -std=c++0x t1.cpp但这两个结果都导致示例中止.
$ ./a.out
terminate called after throwing an instance of 'std::system_error'
what():
Aborted
Run Code Online (Sandbox Code Playgroud)
这是样本:
#include <thread>
#include <iostream>
void doSomeWork( void )
{
std::cout << "hello from thread..." << std::endl;
return;
}
int main( int argc, char *argv[] )
{
std::thread t( doSomeWork );
t.join();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu 11.04上尝试这个:
$ g++ --version
g++ (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
Run Code Online (Sandbox Code Playgroud)
谁知道我错过了什么?
rub*_*nvb 45
你必须加入join std::thread,就像你必须加入一样pthreads.
int main( int argc, char *argv[] )
{
std::thread t( doSomeWork );
t.join();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
更新: 这个Debian错误报告指出了解决方案:添加-pthread到命令行.这很可能是一种解决方法,直到std::thread代码稳定并且g ++将该库拉到应该(或者总是为C++)的时候.
| 归档时间: |
|
| 查看次数: |
40952 次 |
| 最近记录: |