77百科网
当前位置: 首页 生活百科

进程线程协程是什么意思(线程和协程的理解以及它们的区别)

时间:2023-06-13 作者: 小编 阅读量: 1 栏目名: 生活百科

线程和协程的理解以及它们的区别一、进程#先来了解一下操作系统的进程:操作系统对正在运行程序的抽象,这个就是进程(process)比如运行一个web浏览器,一个text文本,都是运行的一个一个进程有的人说:进程是程序运行资源的集合进。

一、进程#

先来了解一下操作系统的进程:

操作系统对正在运行程序的抽象,这个就是进程(process)。

比如运行一个 web 浏览器,一个 text 文本,都是运行的一个一个进程。

有的人说:进程是程序运行资源的集合。进程是系统资源分配的最小单位等等。

从静态的角度来说,进程确实是运行程序的各种资源集合。

如果你进一步思考,进程里的各种资源都有哪些呢?如下图所示:

(图1:进程资源)

内存管理相关

文件系统

调度相关

信号处理

内核栈

进程各种状态

进程运行时统计信息

进程标识

等等。

可以看出,进程中的资源是相当多的。

从 Linux 操作系统对进程的定义也可以看出。我以前对进程结构 task_struct 分析文章:Linux进程: task_struct结构体成员

多进程:操作系统有多个程序运行,那么就有多个进程,如下所示简图:

​ (图2:多进程简图)

二、线程#2.1 什么是线程?#

《操作系统设计与实现》里说:

在传统操作系统中,每个进程中只存在一个地址空间和一个控制流(thread)。

然后,有些情况下,需要在相同地址空间中有多个控制流并行的运行,就像他们是单独的进程一样(只是他们共享相同的地址空间)。

这些控制流通常被称为线程(thread),有时也称为轻量级进程(lightweight process)。

尽管线程必须在进程中执行,但是线程和进程是可以分别对待处理的两个概念。进程用来集合资源,而线程是 CPU 调度的实体。

线程给进程模型增加的是,允许在同一个进程环境中有多个执行流,这些执行流在很大程度上相对独立。

也即是说,在进程中,程序执行的最小单位(执行流)是线程,可以把线程看作是进程里的一条执行流。

一个进程里可以有一条或多条线程。

​ (图3:进程里的线程)

2.2 为什么会有多线程?#

在一个应用程序执行过程中,应用程序里可能会有多种事件执行。

而有些事件执行一段时间后可能会被阻塞。如果把应用程序执行事件分解成多个并行运行的线程,即可以让程序设计变得简单,如果有阻塞的,

可以把这部分让出行换其他线程执行。

还有一个原因是:

线程比进程更轻量级。所以线程比进程更加容易创建,销毁。

第三个跟第一个有点关系,是关于性能的,若多线程都是 CPU 密集型的,那么不能获取性能上增强。如果有大量计算和大量 I/O 处理,那么

多线程就可以获取性能上的优势,因为允许多线程重叠执行。

多线程的缺点:

对于多线程来说,进程中的资源是共享的,所以会产生资源竞争。当进程中的一个线程崩溃了,会导致这个进程里的其他线程也崩溃。所以有时多进程程序更好,一个进程崩溃不会导致其他进程也崩溃。

三、进程与线程区别#

从上面进程和线程介绍知道,线程是程序执行流的最小单位,进程是操作系统分配资源的单位。

进程与进程之间关系:

进程与进程之间是相互独立的。

线程与进程关系:

线程是进程里的执行流,进程里的线程可以是一个,也可以是多个。

所有线程共享进程里一些资源,比如代码,数据,地址空间,信号处理,打开文件,全局变量等。

同时,线程也有自己的寄存器,程序计数器,堆栈,线程状态等

​ (图4:进程与线程关系)

四、协程#

协程是建立在线程之上,一般是语言级别的 ”多线程“ 模型,比线程更加的轻量级。有的叫它微线程。它是完全运行在用户态里。

协程是在线程之上在进行抽象,它需要线程来承载运行。一个线程可以有多个协程。

比如 Go 语言的 goroutine,它用一个关键字 go 就可以运行一个协程程序。

在 Go 语言里面,协程是由 Go 提供的 runtime 来控制和调度。

协程的优点:

  1. 协程栈很小,只有几KB,而线程栈是 1 M,对比起来,创建大量协程需要的内存更少。
  2. 协程的调度是语言提供的 runtime 来调度,是在用户空间直接调度,不需要在内核空间和用户空间来回切换,浪费效率。
  3. 能更好的利用 cpu 的多核,提高程序执行性能。
  4. 避免阻塞,如果协程所在的线程发生了阻塞,那么协程调度器可以把运行在阻塞线程上的协程,调度到其它没有发生阻塞的线程上,继续运行。
五:协程与线程区别#
  1. 协程是运行在线程之上,一个线程可以有多个协程。就像一个进程里可以有多个线程一样。
  2. 协程能更好的利用多核机制。比如 Go 协程可以控制运行在多少个 CPU 的核上。
  3. 协程是在用户空间完成调度,由语言提供的 runtime 进行调度完全用户态。线程由内核调度。
  4. 协程使用内存更小。

文章来自https://www.cnblogs.com/jiujuan/p/16193142.html

    推荐阅读
  • 做菜用的红曲米的用途(特殊食材红曲米是什么)

    做菜用的红曲米的用途简介红曲米,赋予一种“特殊大米”的中药名,是用红曲霉属真菌接种于大米上经发酵制备而成。经过三天的发酵,大米已经红到发紫;四天的发酵后,红曲米晾晒干后便可装袋。功效大量研究发现,红曲米具有非常强大的降低TC、LDL-C、TG、动脉粥硬化指数,能升高HDL-C的相应综合疗效,且服用安全性高、副作用小。红曲米汤药食材:红曲米6-12克,水400-600ml做法:煎汤服用即可。

  • 如何去除家具异味 家具怎么去除异味

    去除家具异味方法:1、植物消除法;2、果皮去除法;3、用盐水;4、隔夜茶擦拭消除法;5、活性炭消除法。一定要把抹布拧干水份后再擦拭家具,这样可以通过茶叶水的气味及蒸发慢慢的让家具上的异味消失。

  • 大学城为什么建在郊区 大学城为什么都在郊区

    2、郊区比较安静,适合学生学习。

  • 厦门避暑胜地游玩攻略(厦门避暑胜地游玩攻略图)

    中山公园一踏进中山公园,就是满眼的绿植。尤其是公园东部林荫繁茂,十步一景,宛如步入皇家园林。排列有序的石桌椅,让中山公园成为不少老厦门人的定点避暑地。山上有海上明珠塔,是厦门的标志性建筑之一。太阳下山后,又能看到厦门的美丽夜景。②乘公交至东渡站,由海山路转登山道上山,20分钟左右即可至山顶。山上原有一座鸿山寺,曾有“鸿山织雨”奇观,为厦门八大景之一。这是一条连通思明南路和石泉路的隧道,全长200多米。

  • 智能防错的成语(容易读错的D音成语)

    后多用作表示大得不切合实际、不合用。后指夸夸其谈,大发议论。后用来形容好军队受到人民欢迎的情况。后指使人觉悟的警告或突如其来的打击。)形容文辞、书法放纵不拘,刚劲逸丽。斥责人消息不灵。比喻长时间的分离难以会面,如参星出西方,商星出东方。)危害国家,残害人民。

  • 创建国家级农产品质量安全县(农业农村部命名第二批国家农产品质量安全县)

    11月2日,第二届国家农产品质量安全县与农产品经销企业对接活动在江苏徐州启动。其中,北京市大兴区、江苏省常州市、徐州市贾汪区、浙江省象山县、福建省安溪县、江西省大余县、山东省潍坊市、河南省罗山县、重庆市梁平区、四川省广元市、广东省江门市、陕西省大荔县、黑龙江省穆棱县、湖南省常德市鼎城区、上海市崇明区、新疆维吾尔自治区伊宁市作为农安县代表接受现场授牌。

  • 王者荣耀战力是什么(王者荣耀战力了解)

    从这张图可以看出英雄战力的组成由五个部分,分别是胜场战力、排位表现分、巅峰表现战力、巅峰系数、活跃系数。在这个时候排位输了其实扣除的战力值比赢一场还要多,表现很好可能会扣得少点。这个战力最多达到市级排名,可能在广东江苏等地,区级排位都比较悬。想要更高的战力,我们就要进入下一部分。每增加20积分就能增加1%的加成。一周未使用该英雄打排位或巅峰赛,系数就会降至95%,此时你的战力值也会降低5%。

  • 公司二维码怎么制作(二维码制作app)

    软件操作过程中有什么问题,都可以联系二维码软件的在线人员,会第一时间帮你解决。

  • 为什么洒水车需要播放音乐(为什么洒水车总是播放)

    很多时候都是《兰花草》这一首歌,那么在很多时候我们也是习惯性地听到这一首歌就知道洒水车正在慢悠悠地开过来了。我们也是知道洒水车是播放《兰花草》这首歌的,所以说大家在听到了这首歌的时候自然也就会赶紧找个地方,或者是远远的躲开了。

  • 江西“野鸡”大学(江西这四所大学臭名昭著)

    尽管如此,在官方发布的392所野鸡大学名单中,江西就占了7所。野鸡大学往往靠着省内知名大学的名号进行虚假宣传,骗取家长支付高昂的学费,而学生进去之后什么都学不到,浪费了四年的青春。不要被野鸡大学抓住心理,不然结果追悔莫及。