线程的主动退出
格式
pthread_exit
#include <pthread.h>
void pthread_exit(void *retval);
功能
线程调用这个函数时,可以主动退出(终止)
它和exit()很像,exit()是终止整个程序,而pthread_exit是终止次线程
如果你在次线程里面调用错误,调用的是exit,整个线程就终止了
返回值
成功返回0,失败返回非零值
参数
retval:线程结束的返回值
如果返回值很多时,就会封装成一个结构体,返回结构体变量的地址即可
return()
注册线程退出处理函数
void pthread_cleanup_push(void (*routine)(void *),void *arg);
void pthread_cleanup_pop(int execute);
弹栈线程退出处理函数的几种条件
pthread_cleanup_push(! 0)主动弹栈
如果线程是被别人调用pthread_cancel取消的,也会弹栈
如果调用pthread_exit函数也是会主动弹栈
注意:return退出的话是不会自动弹栈的,想要自动弹栈用pthread_cleanup_pop(!0)