线程的几种退出方法:
方法 | 参数介绍 | 头文件 | 功能 | 区别 |
return stutus; | status//程序退出的返回值 | -- | 返回到上一级主调函数 | 普通线程执行return,只退出当前线程 主函数中执行return,会退出进程,并释放所有线程 |
exit(int status); | status//程序退出的返回值 | #include<stdlib.h> | 关闭所有文件,终止正在执行的进程 | 不论在哪里执行,都会退出整个进程 所以多线程开发要谨慎使用该函数 |
pthread_exit(void* value_ptr); | value_ptr//程序退出的返回值,可以传NULL | #include<pthread.h> | 退出线程 | 不论是主线程还是普通线程,执行该函数都不会影响进程中的其他线程,只会退出当前线程 |
pthread_cancal(pthread_t tid); | tid//线程的tid | #include<pthread.h> | 使用cancel取消事件,退出目标线程 | 任意线程调用该函数可以退出任意线程,哪怕是普通线程使用该函数退出主线程 |
PS: pthread库不是Linux系统默认的库,而是属于NPTL线程库,NPTL线程库存放在用户层,连接时需要使用静态库libpthread.a,所以在线程函数在编译时,需要连接库函数,如用gcc,使用格式为: gcc 文件名 -l pthread -o 编译文件名