linux高编线程-------线程的取消

有8种方式使进程终止,其中前5种为正常终止,它们是   

1:从 main 返回   
2:调用 exit   
3:调用 _exit 或 _Exit   
4:最后一个线程从其启动例程返回   
5:最后一个线程调用 pthread_exit   异常终止有3种,它们是   
6:调用 abort   
7:接到一个信号并终止   
8:最后一个线程对取消请求做出响应 

线程在运行的过程中经常会用到线程取消。

/**************************
 *功能:发送一个线程取消请求
 *参数:取消的线程
 *返回值:成功返回0,失败返回非0的errnum
 * ***********************/
int pthread_cancel(pthread_t thread);

注意:先取消再收尸

取消有两种状态:允许和不允许

允许取消: 异步取消

    (默认)推迟取消: 推迟到cancel点再响应:POSIX定义的cancel点,都是可能引发阻塞的系统调用。

设置cancel点相关函数:

/**********设置线程是否允许被取消***********/
int pthread_setcancelstate(int state ,int *oldstate);
/*************选择线程取消方式***********/
int pthread_setcanceltype(int type, int *oldtype);
/***************取消点**************/
void pthread_testcancel(void);

线程分离:

/************分离一个线程*************/
int pthread_detach(pthread_t thread);

无法用pthread_join() 函数收尸 

       

原文地址:https://www.cnblogs.com/muzihuan/p/5343276.html