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