用-pthread替代-lpthread】的更多相关文章

-pthread 在多数系统中,-pthread会被展开为"-D_REENTRANT -lpthread".作为编译参数可以通知系统函数开启多线程安全特性,比如将errno定义线程局部变量,gcc手册里也指出应该在编译和链接时都增加-pthread选项.…
原文网址:http://chaoslawful.iteye.com/blog/568602 用gcc编译使用了POSIX thread的程序时通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthread 就可以了,像这样: gcc -c x.c gcc x.o -ox -lpthread 而gcc手册里则指出应该在编译和链接时都增加 -pthread 选项,像这样: gcc -pthread -c x.c gcc x.o -ox -pthr…
最近在使用linux mint15,里面自带的gcc时4.7的,当我编译多线程程序时,使用-lpthread居然说没有找到线程库函数!!!然后man了一下,才发现在gcc 4.7中链接线程库使用-pthread,而不是用-lpthread,为了搞清楚他们之间的区别,我进行了以下测试(测试方法我查找了好多网上的资料): 用gcc编译使用了POSIX thread的程序时通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthread 就可以了,像…
一般情况下,我们在链接一个(文件名为libxxx.so或libxxx.a等的)库时,会使用-lxxx的方式:在Linux中要用到多线程时,需要链接pthread库,按照惯例,我们应该使用-lpthread的方式来进行链接:但是,通过日常的观察,我发现很多开源代码都是使用了-pthread参数,而非使用-lpthread,这是为什么呢? 一通Google后,总算找到一些线索: 为了可移植性:在Linux中,pthread是作为一个单独的库存在的(libpthread.so),但是在其他Unix变种…
第一次使用pthread,遇到的问题还真不少,现在我一一记录一下: 1.关于编译时出现 对‘pthread_create’未定义的引用 之类的错误的解决:由于pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,所以在使用pthread_create创建线程时,在编译中要加-lpthread参数:     gcc -o pthread -lpthread pthread.c 特别的,如果这样还没解决的话: 按照上面编译了一下,还是一样的提示. 后面man gcc…
#include <stdio.h> #include <pthread.h> void *ThreadFunc(void *pArg)  //参数的值为123 { int i = 0; for(; i<10; i++) { printf("Hi,I'm child thread,arg is:%d\n", (int)pArg); sleep(1); } pthread_exit(NULL); } int main() { pthread_t thdId;…
函数 sigwait sigwait的含义就如同它的字面意思:等待某个信号的到来.如果调用该函数的线程没有等到它想等待的信号那么该线程就休眠.要达到等到一个信号,我们得做下面的事: 首先,定义一个信号集: #include <signal.h> sigset_t set; 其次,向信号集中加入我们想等待的信号: #include <signal.h> int sigemptyset(sigset_t *set);//清空信号集 int sigaddset(sigset_t *set…
最近在看一些源代码,遇到了一些使用__attribute__修饰函数和变量的属性方面的代码,不是太了解,很是汗颜,再此做个总结:   GCC使用__attribute__关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化. 描述函数属性的几个重要的关键字:   void noreturnfun() __attribute__((noreturn));//函数不会返回. void centon() __attribute__((alias("__centon")));//设…
概念 linux信号量: 允许多个线程同时进入临界区,可以用于进程间的同步. 和互斥锁(mutex)的区别: 互斥锁只允许一个线程进入临界区. 所在头文件: semaphore.h 主要函数 初始化函数 int sem_init(sem_t *sem, int pshared, unsigned int value) sem:要初始化的信号量 pshared:此信号量是在进程间共享还是线程间共享 value:信号量的初始值 删除函数 int sem_destroy(sem_t *sem) sem…
条件变量:与互斥量一起使用,暂时申请不到某资源时进入条件阻塞等待,当资源具备时线程恢复运行 应用场合:生产线程不断的生产资源,并通知产生资源的条件,消费线程在没有资源情况下进入条件等待,一直等到条件信号的产生主要函数有两个:1)等待条件int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)2)发送条件信号int pthread_cond_signal(pthread_cond_t *cond); 请参考: http:…