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

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

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

线程和协程的理解以及它们的区别一、进程#先来了解一下操作系统的进程:操作系统对正在运行程序的抽象,这个就是进程(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

    推荐阅读
  • 怎样注册海南健康一码通(海南健康一码通怎么注册不了)

    1、注册海南健康一码通的步骤:打开手机支付宝,点击-更多。

  • 钓鲤鱼配线方法(钓鲤鱼配线方法介绍)

    钓鲤鱼配线方法?下面更多详细答案一起来看看吧!但对于初级钓友来说,安全第一,尽量配大点,缺点是这样漂的灵敏度会降低,但是适应性广些。主线对于一般钓友来说1.5-3.5的主线可以应付1-15斤以下的鱼了,建议一般配置2.0-2.5,适应性较广

  • 宝鸡特产(宝鸡特产有哪些好带的)

    柴胡,是一味常见的中药。作为全国柴胡的主产地之一,目前,宝鸡柴胡的种植面积达11万亩,涉及陈仓区、麟游县、太白县等地,年销售收入1.6亿元。以蓝田籍面点师程恒顺制作的为佳。宝鸡传统风味小吃。具有小麦营养特色,加以猪油可补必需脂肪酸之不足。

  • 2021迁安市取暖费去哪里交?(迁安取暖费收费标准)

    依据疫情防控需要,请您到中心收费大厅办理业务的时候,佩戴口罩,配合工作人员进行扫码、测温登记。上一采暖期未办理停热手续被强制关断的用户,需补缴78天热费。因财政不再提供统一收据,收费员在入户收费过程中将使用市供热管理中心印制的热费收据,请广大用户认真核对票据信息和收费人员证件。

  • 巴中市移动公司总经理(毕节移动总经理张黔去年刚上任)

    同时,在人口数量上,据第七次人口普查数据显示,毕节常住人口达到689.96万人,位居贵州第一。而如今,张黔能够升任当地规模较大的地市分公司总经理,其发展潜力不小。另外,李洪平的前任为王毅,当时也是调任贵州移动企业发展部总经理,同时还是如今贵州移动的监事。如此看来,毕节移动在贵州移动各地市分公司的发展中还是挺受重视,今后张黔的发展也会受到省公司不小的关注。

  • 竞选国家中心城市(在11个候选城市中)

    而在北京作为首都之前,其实哈尔滨已经暂定为新中国的首都了。这样看起来,哈尔滨之后,成为我国首都绝对是板上钉钉的事情了。这次会议有一项重大决策就是筹划建立未来的新中国。所以,最后新中国选择北京成为首都,也是基于当时的历史条件和我国的实际情况所决定。基于此,在1949年9月27日,新中国成立前夕,也就正式确定北平成为新中国的首都,而且把北平改名为北京。

  • 车架号是什么在哪里看(车架号怎么看)

    车辆上牌,年审,查违章都可以通过车架号查询。车架号一般可以在挡风玻璃左下角可以查看。车架号是包括生产厂家,车辆型号,发动机类别,生产年份,安全气囊性质,生产地,厂家系列号等信息汇总。车架号一般是17位英文字母和数字组成的。车架号很重要,如果车架钢印号看不清楚,那么年检很麻烦的,就像你身份证掉了一样。

  • 珠海办理《广东省居住证》所需资料(珠海办理《广东省居住证》所需资料怎么办理)

    办理《广东省居住证》所需资料温馨提示:监护人、近亲属代为办理业务时,应当同时提供合法有身份效证件原件及复印件及有效联系方式。(一)首次申领1、《广东省居住证办理申请表》;2、居住证数码相片回执;3、本人有效第二代居民身份证原件及复印件。

  • 桃树病虫害怎么治(桃树病虫害防不住)

    桃蛀螟桃蛀螟每年3代,也是4月开始化蛹、羽化,5月下旬危害桃果。白粉病白粉病以子囊壳、菌丝在病叶芽鳞越冬,芽鳞绽开时就开始入侵,但它侵入嫩芽、嫩叶和幼果主要在花后一个月内,发病在5月份。这次喷药一定要喷严喷细,包括树干、树盘、石缝。方案二:每亩桃用50%辛硫磷乳油1斤兑水200斤喷洒桃园地面。方案三:每亩桃用40%毒死蜱乳油600-800倍喷洒地面并划锄。

  • 脆脆的酸甜茄子的家常做法(酸甜脆茄子的做法介绍)

    茄子切成长条全部粘干淀粉,至少要两-三次才能脆,裹好淀粉的茄子条下油锅炸熟炸脆,出锅备用,今天小编就来说说关于脆脆的酸甜茄子的家常做法?下面更多详细答案一起来看看吧!脆脆的酸甜茄子的家常做法茄子切成长条。醋+料酒+生抽+糖+淀粉+少量水调成料汁备用。油热下蒜末、葱末、花椒、干辣椒出香味后倒入炸好的茄子,翻炒均匀马上出锅,脆脆的很好吃,这样酸甜脆茄子就做好啦。