文章目录

  • 一. 线程
    • 为什么要引入线程:
    • 引入进程后的变化
    • 线程的属性
    • 线程的实现
  • 二. 多线程模型
    • 1. 多对一模型
    • 2. 一对一模型
    • 3. 多对多模型
    • 三. 总结

一. 线程

为什么要引入线程:

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

引入进程后的变化

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

线程的属性

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

线程的实现

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

二. 多线程模型

1. 多对一模型

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

2. 一对一模型

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

3. 多对多模型

  • 结合以上两种模型的结果,解决缺点。

三. 总结

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

  1. 小吴的《机器学习 周志华》学习笔记 第二章 模型评估与选择

    小吴的<机器学习 周志华>学习笔记 第二章 模型评估与选择 上一周我们介绍了第一章的基础概念,这一次将带来第二章的前三节.后面的2.4 比较检验与2.5 偏差与方差,涉及概率论与数理统计概 ...

  2. 《Go语言圣经》学习笔记 第二章 程序结构

    Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...

  3. PhalAPI学习笔记 ——— 第二章接口服务请求

    PhalAPI学习笔记 --- 第二章接口服务请求 前言 接口服务请求 接口服务请求案例 自定义接口路由 开启匹配路由 配置路由规则 nginx apache 服务请求 结束语 前言 公司业务需要转学 ...

  4. [go学习笔记.第二章] 2.go语言的开发工具以及安装和配置SDK

    一.工具介绍: 1.Visual Studio Code 一个运行于Mac,Windows,和linux上的,默认提供Go语言的语法高亮的IED,可以安装Go语言插件,还可以支持智能提示,编译运行等功 ...

  5. 小吴的《机器学习 周志华》学习笔记 第二章 2.4 比较检验、2.5 偏差与方差

    小吴的<机器学习 周志华>学习笔记 第二章 2.4 比较检验. 2.5 偏差与方差 2.4 比较检验 上一周提到了实验的评价方法和性能量度,步骤简单可以看成:先使用某种实验评估方法测得学习 ...

  6. 机器人导论(第四版)学习笔记——第二章

    机器人学导论(第四版)学习笔记--第二章 2. 空间描述和变换 2.1 引言 2.2 描述:位置.姿态与位姿 2.3 映射:从一个坐标系到另一个坐标系的变换 2.4 算子:平行,旋转和变换 2.5 总 ...

  7. 计算机操作系统学习笔记 第二章、进程与线程

    文章目录 1 进程和线程 1.1 进程的概念和特征 1.1.1 进程的概念 1.1.2 进程的特征 1.2 进程的状态与转换 1.3 进程的组织 1.4 进程控制 1.5 进程通信 1.5.1 共享存 ...

  8. 操作系统学习笔记 第二章:进程管理(王道考研)

    本文章基于 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系统概述 ...

  9. Kotlin学习笔记 第二章 类与对象 第十一节 枚举类 第八节密封类

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

最新文章

  1. react antD moment
  2. 企业网站做SEO优化必走的三条路线,希望新人前方不要右转
  3. java存储过程与sql语句_存储过程与SQL语句怎么选择
  4. SqlServer安装出错解决办法
  5. sql 日期和当前日期时间差_详解PostgreSQL 如何获取当前日期时间
  6. P3723-[AH2017/HNOI2017]礼物【FFT】
  7. Atlantis HDU - 1542 (扫描线,线段树)
  8. C++中如何判断文件是否存在
  9. 初步学习Django-第一篇:创建项目
  10. linux配置网桥,Linux下通过brctl配置网桥
  11. 贪心算法适用条件_贪心算法问题
  12. python--模拟掷骰子游戏
  13. 黑客工具软件大全100套
  14. caffe最优化方法
  15. Microsoft Web Farm Framework (WFF) 2.0正式发布
  16. jetson nano 部署yolov5s
  17. 创新电影院布局5G+4K,移动电影院成放映领域的“黑科技”
  18. openstack上传镜像
  19. 为什么国内搜索不到国外服务器网站?
  20. 数据标准化的原因及方法

热门文章

  1. AcWing--2.01背包问题
  2. java 请求url 返回数据_java后台发起get请求获取响应数据|chu
  3. linux 键盘过滤,linux – 需要拦截HID Keyboard事件(然后阻止它们)
  4. QT学习笔记(七):定时器事件的3种常用使用方式
  5. ❤『知识集锦』一文搞懂mysql索引!!(建议收藏)
  6. 鬼才!用Python计算圆周率 π
  7. 使用 mitmproxy + python 做拦截代理
  8. dnf时装预览怎么打开_DNF:史上最好看时装上线,大佬已经玩疯,全服都是真香的气息...
  9. 大学计算机导论报告,大学计算机导论论文参考.docx
  10. java调用三汇语音卡,三汇语音卡