【学习笔记】第二章——线程与多线程模型

一. 线程

为什么要引入线程:

  • 有的进程可能要“同时进行很多事”(如QQ的语音、视频、文件处理等)。但传统进程只能串行地执行,为此引入线程增加并发度
  • 程序执行流的最小单位:传统为进程,如今为线程
    在这里插入图片描述
  • 线程可以理解为“轻量级进程”
  • 进程内的各线程之间也可以并发,从而进一步提升系统的并发度
  • 引入线程后,进程只作为除CPU外的系统资源分配单元(如打印机、内容地址空间等)
    在这里插入图片描述

引入进程后的变化

  • 调度的基本单位更换成线程
  • 切换进程,需要切换运行环境,系统开销大
  • 切换线程不需要切换运行环境,系统开销小
  • 举个例子:后端组的电脑,更换使用员工:同样换成后端员工,就可以省去不少环境配置的功夫;而换成前端员工,那么相对肯定麻烦点。
    在这里插入图片描述

线程的属性

  • CPU 调度的单位
  • 几乎不拥有系统资源
  • 共享内存地址空间,同一进程的线程间通信无需系统干预
  • 同一进程中线程切换,不会引起进程切换;不同进程中线程则会。
  • 同一进程中线程切换,系统开销小;反之则大
  • 每个线程都有线程ID、线程控制块
    在这里插入图片描述

线程的实现

  • 用户级线程
  • 用户态下,即可完成线程切换
  • 对用户而言,是多线程;对操作系统而言,是单线程(透明)
  • 可以理解成:“从用户视角能看到的线程
    在这里插入图片描述
  • 系统级线程:
  • 线程管理由操作系统内核完成,必须在核心态下进行。
  • 可以理解成“从操作系统内核视角看得到的线程
    在这里插入图片描述
  • 二者结合的情况
  • 注意:用户级线程数大于等于内核级线程
  • 重点:只有内核级线程才是处理机分配的单位。
  • 图中例子看一下,帮助理解。
    -

二. 多线程模型

1. 多对一模型

  • 优点:不用切换到核心态,效率高
  • 缺点:一个线程阻塞则整个进程阻塞,并发度不高。不支持多核CPU下并行。
    在这里插入图片描述

2. 一对一模型

  • 优点:一线程阻塞,其他线程还可继续运行,并发能力强,支持多核CPU下并行。
  • 缺点:线程管理成本高,开销大。一用户进程占多个内核级线程
    在这里插入图片描述

3. 多对多模型

  • 结合以上两种模型的结果,解决缺点。
    在这里插入图片描述

三. 总结

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值