pthreadjoin 线程退出 线程堆栈未释放 linux,linux线程——pthread_exit()与pthread_join()...

本文详细介绍了Linux线程管理中的pthread_exit()和pthread_join()函数,包括它们的功能、参数、返回值及使用示例。pthread_exit()用于线程退出并返回值,但不释放资源,而pthread_join()则是主线程等待子线程结束并回收资源。理解这两者的配合使用对于线程管理至关重要。
摘要由CSDN通过智能技术生成

一、pthread_exit()

函数简介:

头文件:#include

函数定义: void pthread_exit(void* retval);

描述:

线程通过这个函数来终止执行,就如同进程在结束时候调用exit函数一样。这个函数的作用是终止调用它的线程,并且返回一个指向某个对象的指针。由于一个进程中的多个线程是共享数据段的,因此通常在线程自己调用pthread_exit函数推出以后,退出线程所占用的资源并不能随着线程的终止而得到释放,还要配合使用那个pthread_join函数(下一部分)通过其他线程的同步并释放资源。

参数:

retval:这是函数的唯一的参数——是函数的返回代码。(返回的内容存储在void *retval中)

只要pthread_exit中的参数retval不是NULL,这个值将被传递给 thread_return。最后要说明的是,一个线程不能被多个线程等待,否则第一个接收到信号的线程成功返回,其余调用pthread_join的线程则返回错误代码ESRCH。

一个比较好的例子:

#include

#include

/*线程1*/

void* thread_1(void* arg)

{

int i;

for(i=0;i<=6;i++)

{

printf("This is a pthread_1.\n");

if(i==2)

pthread_exit((void*)1);//使用pthread_exit不会使得线程资源释放

sleep(1);

}

}

/*线程2*/

void* thread_2(void *arg)

{

int i;

for(i=0;i<3;i++)

{

printf("This is a pthread_2.\n");

}

pthread_exit((void *)2);//使用pthread_exit不会使得线程资源释放

}

int main(void)

{

pthread_t id_1,id_2;

i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值