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

一、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

你可能感兴趣的:(pthreadjoin,线程退出,线程堆栈未释放,linux)