pthread_exit(void *retval)
来源:互联网 发布:golang 1.9 java比较 编辑:程序博客网 时间:2024/05/22 06:52
用法:#include <pthread.h>
功能:使用函数pthread_exit退出线程,这是线程的主动行为;由于一个进程中的多个线程是共享数据段的,因此通常在线程退出之后,退出线程所占用的资源并不会随着线程的终止而得到释放,但是可以用pthread_join()函数(下篇博客中讲到)来同步并释放资源。
说明:retval:pthread_exit()调用线程的返回值,可由其他函数如pthread_join来检索获取。
/*thread.c*/ #include <stdio.h> #include <pthread.h> /*线程一*/ void thread_1(void) { int i=0; for(i=0;i<=6;i++) { printf("This is a pthread_1.\n"); if(i==2) pthread_exit(0); //用pthread_exit()来调用线程的返回值,用来退出线程,但是退出线程所占用的资源不会随着线程的终止而得到释放 sleep(1); } } /*线程二*/ void thread_2(void) { int i; for(i=0;i<3;i++) printf("This is a pthread_2.\n"); pthread_exit(0); //用pthread_exit()来调用线程的返回值,用来退出线程,但是退出线程所占用的资源不会随着线程的终止而得到释放 } int main(void) { pthread_t id_1,id_2; int i,ret; /*创建线程一*/ ret=pthread_create(&id_1,NULL,(void *) thread_1,NULL); if(ret!=0) { printf("Create pthread error!\n"); return -1; } /*创建线程二*/ ret=pthread_create(&id_2,NULL,(void *) thread_2,NULL); if(ret!=0) { printf("Create pthread error!\n"); return -1; } /*等待线程结束*/ pthread_join(id_1,NULL); pthread_join(id_2,NULL); return 0; }
以下是程序运行结果:
备注:pthread库不是Linux系统默认的库,连接时需要使用静态库libpthread.a,所以在线程函数在编译时,需要连接库函数,如上图 gcc pthread_create.c -o pthread_create -lpthread
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <pthread.h> #include <stdio.h> #include <sys/types.h> void *a(); int main() { pthread_t fd; char *b; pthread_create(&fd,NULL,a,NULL); pthread_join(fd,(void *)&b); printf("%s",b); return 0; } void *a() { char *p="asdf"; pthread_exit(p); }
- pthread_exit(void *retval)
- void pthread_exit(void *retval) http://blog.csdn.net/youbang321/article/details/7816016
- pthread_exit(void *rval_ptr)和pthread_join(pthread_t thread, void **rval_ptr)
- 关于pthread_exit(void *rval_ptr)使用void指针的问题
- pthread_exit()
- pthread_exit
- pthread_exit
- pthread_exit()
- pthread_exit()
- pthread_exit()
- pthread_exit
- pthread_exit()
- pthread_exit()
- void EXTI_Configuration(void)
- retval 的作用
- [in][out][retval]
- 笔记十:线程间的通信(pthread_exit()和pthread_join())
- pthread_exit简介
- CodeRush使用教程十四:Target Picker
- cannot exec `cpp0': No such file or directory
- 让你提升命令行效率的Bash 快捷键
- 求助
- linux device driver Makfile
- pthread_exit(void *retval)
- CodeRush使用教程十五:代码修复提示
- 使用不同用户名启动husdon时出现的问题
- Menu由两种形式
- MongoDB数据库和集合的状态信息
- JAVA序列化在IO中读写对象的使用
- CodeRush使用教程十六:解码器(Decompiler)
- 字符串处理转换
- 广告