linux(线程控制)

目录:

           1.线程创建

           2.线程等待

           3.线程终止

           4.线程分离

           5.线程ID

--------------------------------------------------------------------------------------------------------------------------------

1.线程创建

pthread_create

linux(线程控制)_第1张图片

 pthread_t *pthread 是一个输出型参数,会把我们的线程ID返回

pthread_self  ---  获取线程ID

linux(线程控制)_第2张图片

 linux(线程控制)_第3张图片

这个问题我们最后在解决!!!

--------------------------------------------------------------------------------------------------------------------------

linux(线程控制)_第4张图片

linux(线程控制)_第5张图片

 线程健壮性的有问题的,一个线程出现了崩溃的问题,那么整个进程也就会跟着崩溃

linux(线程控制)_第6张图片

 --------------------------------------------------------------------------------------------------------------------

 2.线程等待

一般而言,线程也是需要被等待的,如果不等待,可能会导致类似于”僵尸进程“的问题!!!

linux(线程控制)_第7张图片

linux(线程控制)_第8张图片

 上面我们的情况是代码跑完了的情况下pthread_join来获取线程的退出信息

但是要是我们线程是异常退出的呢??我们的pthread_join能够或者需要处理嘛???根本不需要!!!,我们线程出现崩溃的情况,我主线程也别管了,你也管不了,你也是跟着崩溃了,那么你pthread_join没有意义了

所以pthread_join只需要关心跑的对还是不对。

--------------------------------------------------------------------------------------------------------------------------

3.线程终止

线程终止的方案:

1.函数中return(a. main函数退出return的时候代表(主线程and进程退出),b.其它线程函数return,只代表当前线程退出 )

2.pthread_exit()

linux(线程控制)_第9张图片

 linux(线程控制)_第10张图片

 exit()呢??

linux(线程控制)_第11张图片

 exit是终止进程的,不要在其它线程中调用,如果你就像终止一个线程的话!!!

3.pthread_cancel  (取消目标线程!!!)

linux(线程控制)_第12张图片

 linux(线程控制)_第13张图片

 为什么是-1呢???

linux(线程控制)_第14张图片

如果以后看到一个线程的退出时的返回值是-1,证明这个线程是被取消的 !!!

4.线程分离

linux(线程控制)_第15张图片

 如何分离呢???     pthread_detach

linux(线程控制)_第16张图片

linux(线程控制)_第17张图片

linux(线程控制)_第18张图片

一个线程被设置分离之后,绝对不能在进行join了!!!!!

 主线程不退出,新线程处理完业务,处理完毕在退出!!!

5.线程ID

linux(线程控制)_第19张图片

 可是这一串数字又是什么呢??

linux(线程控制)_第20张图片

 linux(线程控制)_第21张图片

 linux(线程控制)_第22张图片

你可能感兴趣的:(Linux模块学习,linux)