-pthreads测试

OS:solaris 8
Gcc: gcc (GCC) 3.4.6

#include <iostream> 
int main(int argc,char* argv[]){ 
#ifdef _REENTRANT 
    std::cout<<"threaded"<<std::endl; 
#else 
    std::cout<<"single thread"<<std::endl; 
#endif 
    return 0; 
}

无论是用
g++ threadTest.cpp -o thr –pthreads
还是用
g++ threadTest.cpp -o thr
编译,输出的结果都是threaded
而,把代码稍微修改一下

#include <stdio.h> 
int main(int argc,char* argv[]){ 
#ifdef _REENTRANT 
    printf("%s\n","threaded"); 
#else 
    printf("%s\n","single thread"); 
#endif 
    return 0; 
}


g++ threadTest.cpp -o thr –pthreads
编译输出threaded

g++ threadTest.cpp -o thr
编译输出single thread
结论:
在solaris下在编译源代码的时候给gcc加-pthreads参数的一个主要的用途就是定义
_REENTRANT宏。这将导致在pthreads和solaris threads混用的时候,采用Solaris
threads语义。
但是iostream等头文件会强行定义这个宏。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥