pthread_exit()
来源:互联网 发布:cyberduck for mac 编辑:程序博客网 时间:2024/06/05 20:53
pthread_exit函数
原型:void pthread_exit(void *retval)
用法:#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
0 0
- pthread_exit()
- pthread_exit
- pthread_exit
- pthread_exit()
- pthread_exit()
- pthread_exit()
- pthread_exit
- pthread_exit()
- pthread_exit()
- pthread_exit简介
- pthread_join/pthread_exit
- pthread_exit手册
- pthread_join/pthread_exit
- pthread_exit函数
- pthread_self 、pthread_exit
- pthread_exit()函数
- pthread_exit函数
- pthread_join pthread_exit pthread_detach
- iOS 7 交互式过渡
- 致命的错误:python中误输入tab键
- lock wait timeout exceeded try restarting transaction mysql
- boost 编译命令
- poj2479(子串和变形,DP)
- pthread_exit()
- An association from the table * refers to an unmapped class: *
- 有好多的非处女们确实让大家反感,知道为什么吗?其实你们应该检讨下自己!
- centOS命令随笔(1)-date,cal,ls
- Ubuntu下的OpenERP负载均衡实例
- Android中SQLite应用详解
- error4430, errro2419 error C2182等win: 错误,加window.h 头文件即可
- 《逆袭大学》文摘——9.1 一切让代码行数说话
- 快播转型,用户且用切珍惜