有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() 函数收尸