线程创建等待及退出

思路
防止线程还没有处理完主进程就退出因此要使用
在线程中

static char *p = "t1 run out";
pthread_exit((void *)p);

在主函数中

char *pret = NULL;
pthread_join(t1,(void *)&pret);

主进程运行到pthread_join时会等待线程的pthread_exit返回才会继续进行主进程的运行

有数据传输的时候的做法 如果没数据传输的话可以去掉
static char *p = "t1 run out";删除

pthread_join(t1,(void *)&pret);
pthread_exit((void *)p);

改为

pthread_join(t1,NULL);
pthread_exit(NULL);

代码演示

#include<stdio.h>
#include<pthread.h>

void *fun1(void *arg){
	static char *p = "t1 run out";//必须使用static才可全局访问,不然会随这fun1的退出而将其内存清除
	printf("t1: %ld thread\n",(unsigned long)pthread_self());//将其id输出
	printf("param : %d\n",*((int *)arg));
	pthread_exit((void *)p);
}
int main(){
	int ret;
	int param = 100;
	pthread_t t1;
	char *pret = NULL;
	ret = pthread_create(&t1,NULL,fun1,(void *)&param);//创建线程
	printf("main: %ld thread\n",(unsigned long)pthread_self());
	
	pthread_join(t1,(void *)&pret);	
	printf("main t1 quit return %s\n",pret);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值