视频
知识总览
![在这里插入图片描述](https://img8.php1.cn/3cdc5/1284f/696/977cae86e10fbd9a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2Fyc2hleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
是什么,为什么?
进程是程序的一次执行。
但有些功能不是由一个程序顺序处理就能实现的。
有的进程可能需要“同时”做很多事情,而传统的进程只能串行地执行一系列程序。
因此,引入“线程”来增加并发度。
引入线程后,线程成为了程序执行流的最小单位。
如图,进程包含线程。
![在这里插入图片描述](https://img8.php1.cn/3cdc5/1284f/696/bdf807d78b9e043a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2Fyc2hleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
可以把线程理解为“轻量级进程”。
线程是一个基本的CPU执行单元,也是程序执行流的最小单位。
引入线程后,进程之间可以并发,进程内的个线程之间也可以并发,进一步提升了系统的并发度。
引入线程后,进程只作为除CPU之外的系统资源的分配单元。
也就是说,图中这些系统资源是分配给进程的,而不是分配给线程的。![](https://img8.php1.cn/3cdc5/1284f/696/ae7f2a8d87cdb558.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2Fyc2hleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
引入线程后的变化
引入线程后,进程是资源费配的基本单位,线程是调度的基本单位。
总的来说,提升并发度,且并发的开销变小。
![在这里插入图片描述](https://img8.php1.cn/3cdc5/1284f/696/bf6d223a2b7c52b3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2Fyc2hleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
线程的属性
注意:
线程是处理机调度的单位。
每个线程都有一个线程ID,TCB控制块。
线程几乎不拥有系统资源。
线程也有那三种基本状态。
![在这里插入图片描述](https://img8.php1.cn/3cdc5/1284f/696/88efef063ca2380b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2Fyc2hleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
线程的实现方式
用户级线程:
有标红的那几句比较重要
![在这里插入图片描述](https://img8.php1.cn/3cdc5/1284f/696/023ea4d5612ba1c4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2Fyc2hleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
内核级线程:
![在这里插入图片描述](https://img8.php1.cn/3cdc5/1284f/696/3d3366f9138baa34.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2Fyc2hleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
二者组合方式:
内核级线程才是处理机分配的单位。
因为用户级的它看不见。
![在这里插入图片描述](https://img8.php1.cn/3cdc5/1284f/696/793f90ddf83a346f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2Fyc2hleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
多线程模型
多对一
多个用户级&一个内核级。
优点:线程管理的系统开销小。
缺点:一个用户级被阻塞后,整个进程都会被阻塞,并发度不高,多个线程不可在多核处理器上并行运行,因为它们只对应了一个内核级线程。
![在这里插入图片描述](https://img8.php1.cn/3cdc5/1284f/696/85ec08ca529787d2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2Fyc2hleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
一对一
优缺点直接跟上面的反过来了。
优点:并发度高。
缺点:开销大。
![在这里插入图片描述](https://img8.php1.cn/3cdc5/1284f/696/435b3dd35259bde3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2Fyc2hleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
多对多
以上两者的结合。
![在这里插入图片描述](https://img8.php1.cn/3cdc5/1284f/696/174d29952e4bd4ad.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2Fyc2hleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
总结
![在这里插入图片描述](https://img8.php1.cn/3cdc5/1284f/696/31a83e67ba9276db.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2Fyc2hleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)