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

文章目录

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

一. 线程

为什么要引入线程:

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

引入进程后的变化

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

线程的属性

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

线程的实现

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

二. 多线程模型

1. 多对一模型

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

2. 一对一模型

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

3. 多对多模型

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

三. 总结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ghelper失效_Ghelper账号+网易云音乐领黑胶会员35天

点击蓝字关注我们,了解更多 追求美好的生活Ghelper账号 :账号:yiyaniosfx.cn密码:yiyanyiyan网易云:打开网易云音乐APP->顶部直播->随便进一个直播->右下角黑胶VIP领取->在次日1点后观看直播可领7天黑胶VIP->每天…

python利用tensorflow识别圆_RaspberryPi上实现佩戴口罩识别——2020电赛F题小记

今年的电赛题目非常反常,传统控制题目基本没有,新增加了测距题目,甚至物联网题目,Ai题目都出来了。直接电赛变算法钞能力大赛。看到F题:测温人脸识别,碰巧我们手头有调好的红外测温模块树莓派openmv&#x…

python输错了怎么办_python怎么实现输错三次密码之后锁定

功能需求: 1.输入用户名密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 实现思路: 1.判断用户是否在黑名单,如果在黑名单提示账号锁定。 2.判断用户是否存在,如果不存在提示账号不存在。 3.判断账号密码是否正确,如果…

exchange邮件服务器_基于Spring Boot快速实现发送邮件功能

邮件在项目中经常会被用到,比如用邮件发送通知。比如,通过邮件注册、认证、找回密码、系统报警通知、报表信息等。本篇文章带大家通过SpringBoot快速实现一个发送邮件的功能。 邮件协议 下面先简单了解一下常见的邮件协议。常用的电子邮件协议有SMTP、PO…

redis序列化_SpringBoot整合redis

redis是最常用的缓存数据库,常用于存储用户登录token、临时数据、定时相关数据等。redis是单线程的,所以redis的操作是原子性的,这样可以保证不会出现并发问题。redis基于内存,速度非常快,据测试,redis读的…

spring cloud alibaba_SpringCloudAlibaba与Cloud搭配方案

一 简介Spring Cloud Alibaba致力于提供微服务开发一站式解决方案。此项目包括开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,你只需要添加一些注解和少量配置…

python isalpha函数用法_python中string模块各属性以及函数的用法

任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作。 python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串操作需求: python的字符串属性函数…

php curl header_PHP中的yield与协程(二十一节)

大家好,我是老李。顺风说骚话,逆风讲道理最近在大家一起努力下,那个沙雕肺炎患病人数增长率下降了不少,总体来说还算顺,所以今天这篇注定又要骚话连篇了。听说最近不少玉米开始向大连、威海、烟台方向涌入,…

python增加一列数据_Python编程给numpy矩阵添加一列方法示例

首先我们有一个数据是一个mn的numpy矩阵现在我们希望能够进行给他加上一列变成一个m(n1)的矩阵 import numpy as np a np.array([[1,2,3],[4,5,6],[7,8,9]]) b np.ones(3) c np.array([[1,2,3,1],[4,5,6,1],[7,8,9,1]]) PRint(a) print(b) print(c) [[1 2 3] [4 5 6] [7 8 9…

用稳压管保护单片机引脚_一步一步,全程揭开单片机的原理,让做电子变得轻松自如!...

学习单片机必要的硬件学习单片机都需要什么?首先要掌握必要的电子基础知识;再次选择大众化、性价比高的单片机,熟悉它的引脚功能定义;另外还需要电脑与下载程序的下载器。一、单片机建议选择型号为STC89C52RC单片机,如…

python word 表格宽度_RPA手把手——python-docx 设置 word 文档中表格格式

艺赛旗|做RPA生态先行者 RPA10.0全新首发免费下载 点击下载 引入会用到的库 from docx import Document from docx.shared import Pt from docx.enum.text import WD_PARAGRAPH_ALIGNMENT from docx.shared import Cm from docx.shared import RGBColor 表格样式 #方法一&#…

软引用和弱引用的区别_强、软、弱、虚引用的区别和使用

原文阅读:强、软、弱、虚引用的区别和使用​mp.weixin.qq.comJava提供了四种级别的应用类型:强引用、软引用、弱引用及虚引用。那么这四种引用类型有什么区别呢?首先我们通过一张图来看看四种引用在Java中的表示:FinalReference由…

python的print输出_python中的print()输出

1.普通的输出: print(str)#str是任意一个字符串,数字・・・ 2.格式化输出: print(1,2,%s,%d%(asd,4)) 1,2,asd,4 与C语言有点类似 3.其它: >>> pi 3.141592653 >>> print(%10.3f % pi) #字段宽10,精…

python文本文件不能用二进制文件方式读入_如何使用python函数以二进制形式读取文件?...

虽然读取文件的方式各种各样,但是通过二进制,还是头一次,实现过过程并不难,我们需要将文件先做好封存,以函数的形式,保存下来,然后直接导入进行使用,这样就可以读取文件,…

一组数字中算出最相近的组合_据说在金字塔里发现的这组数字,貌似是通往宇宙的密码...

我们都知道阿拉伯数字是全世界都在用的计数单位的数字,我们的生活离不开阿拉伯数字,其广泛性很大。比如买菜、买衣服。做数学题等等都需要用到。不过呢早前有人称在埃及金字塔内发现了一组数字142857,这组数字貌似就是通往宇宙的密码。这一说…

前端悬浮窗效果_Flutter自绘组件:微信悬浮窗(一)

看微信公众号的时候时常会想退出去回复消息,但又不想放弃已经阅读一半的文章,因为回复信息后再从公众号找到该篇文章之间有不必要的时间花费,微信悬浮窗的出现解决了这个烦恼,回复完消息之后只需要点击悬浮窗就可以回到之前在阅读…

python程序设计论文_【程序设计论文】程序设计论文范文(共40篇)

发表于:2020/10/20 11:53:15  点击数:77次 微信小程序开发课程改革实践 [摘要]微信小程序由于具有不同于传统移动APP的诸多优点,自推出以来得到了业界的广泛关注,计算机类专业人才培养过程要适应市场变化…

python数据类型总结_Python 数据类型总结

感觉新学点什么总要写下来,否则总有一种记不住的感觉 数据类型 python 中的变量定义就是赋值语句比如 val1 25 val2 "hehe" 类型转换函数 int()转换成整数 float()转换成浮点数 str()转换成字符串 complex(x)将x转为复数,x为实部&#xff0c…

python分箱分类代码_Python实现变量分箱及应用

之前发的内容里,代码看不清,此篇为重发。 个人观点,信贷行业中,模型稳定性往往比模型效果更重要。信贷行业所做的任何规则、政策、模型的调整,都需要较长时间才能知道结果如何,模型迭代周期相较于其他行业可…

date类型_Quartz与Date---cron的相互转换

产生原因:因为项目最近设计到了一个Quartz相关的模块,前端需要传递时间参数到后台, 然后后台设置一个新的定时任务, 所以后台需要一个可以实现Date与cron之间的相互转换(因为Quartz需要的Cron格式的数据),所以就借助java的SimpleDateFormat的格式化,然后…