线程的终止情况
Linux中有俩种方式可以使线程正常终止:
- 通过
return
从线程函数返回 - 通过调用
pthread_exit()
函数,使线程退出
另外线程受到其他线程的干扰或者自身出错,都会导致线程非正常终止,而这种终止是不可预见的。
无论线程是正常终止还是非正常终止,都会涉及到一个资源释放的问题:
- 在线程正常终止的情况下,能够自动释放线程的资源
- 在线程非正常终止的情况下,调用
pthread_cleanup_push()\pthread_cleanup_pop()
俩个函数来进行线程清除工作
使用return返回线程
return
我们在C语言的学习过程中已经很熟悉了,尤其是在必不可少的主函数中,最后加上return 0
,在一个函数被调用的时候,只要执行到return
,被调用的函数就会返回到主函数中。
所以,return
具有返回调用函数到主函数的功能,在线程调用的函数中使用return
就会使线程退出,退出到进程中。
但如果在main
函数中调用return
,整个进程将退出,进程中的线程也随之终止。
调用pthread_exit()终止线程
pthread_exit()
函数是可以使线程正