今天初尝gcc4.4.0对c++0x草案的支持,先试了一下thread。
感觉很别扭,创建完对象后线程就运行了。估计是我还嫩点儿
#include
#include
#include
#include
using namespace std;
void foo( int a , int b , int c ){
cout << a << endl;
cout << b << endl;
cout << c << endl;
return ;
}
int main( int argc , char ** argv){
try{
thread a(foo , 1 , 2, 3 );
cout << a.get_id() << endl;
a.join();
}catch( const system_error& err){
cout << err.code() < }catch( ... ){
assert( false );
}
return 0;
}
先用g++ test_thread.cpp -std=c++0x -g 编译,一切正常。运行,seg fault,晕死。就这么几行代码………………
没办法gdb吧,发现/xxx//i686-pc-linux-gnu/libstdc++-v3/include/i686-pc-linux-gnu/bits/gthr-default.h:679这里出的问题,里面居然是“ return __gthrw_(pthread_create) (__threadid, NULL, __func, __args);”
靠,不是原生线程支持,还是要用pthread。加上-pthread编译。
g++ test_thread.cpp -std=c++0x -g -pthread
再运行,OK啦!
那为什么在没有 -pthread 时也不提示个错误那!!!!!!!
阅读(1228) | 评论(0) | 转发(0) |