zoukankan      html  css  js  c++  java
  • 进程、线程、协程

    什么是进程?

      进程(Process)是正在运行的程序的实例,是程序的实体,由程序、数据进程控制块(PCB Processing Control Block)三部分组成。进程有自己的地址空间,包括文本区域(存储处理器执行的代码)、数据区域(存储变量和执行期间动态分配的内存)、堆栈区域(存储活动过程调用的指令和本地变量)。进程具有

    • 动态性:晋城市程序在多道程序系统中的一次执行过程,动态产生动态消亡。
    • 并发性:任何进程可以同其他进程一起并发执行
    • 独立性:进程是一个能独立进行的基本单位,是系统分配资源和调度的独立单位。
    • 异步性:进程可以各自独立的进行

      运行中的进程有以下三种基本状态

    • 就绪状态:已获得除处理器以外的所需资源,等待处理器资源。
    • 运行状态:进程已占用处理器资源。
    • 阻塞状态:由于进程需要等待某种条件(如I/O操作),在条件满足之前无法继续进行。该事件发生前即使把处理器资源分配给该进程也是无法运行的。

    什么是线程?

      线程(thread)是操作系统能够进行运算调度的最小单位,线程从属于进程,是进程中的实际运作单位,是程序的实际执行者。一个进程中可以并发多个线程,每条线程并行执行不同的任务。

      线程由相关堆栈(系统栈或用户栈)寄存器(存储线程内的局部变量,不存储其他线程的变量和线程控制块(TCB Thread Control Block)组成。线程具有以下属性

    • 轻型实体,线程实体基本上不拥有系统资源
    • 是独立调度和分配的基本单位
    • 可并发执行
    • 共享进程资源:在同一进程中的所有线程都可以共享该进程所有的资源,所有的线程都有相同的地址空间(进程的地址空间),线程可以访问该地址空间的每一个虚地址,可以访问进程所拥有的已打开的文件。

      对操作系统而言,线程是最小的执行单元,进程是最小的资源管理单元,它们都是操作系统所管理的。

      线程具有以下几种状态:初始化、可运行、运行中、阻塞、销毁

    什么是协程?

      协程是一个特殊的函数,这个函数可以被挂起,也可以重新在挂起处外继续运行,跟进程、线程不是同一个维度的概念。

      一个进程可以包含多个线程,一个线程可以包含多个协程。即一个线程里可以有多个这样的特殊函数在运行,但是一个线程里的多个协程的运行是串行的。如果是多核cup,多个进程或者一个进程里的多个线程是可以并行运行,但是一个线程的多个协程是绝对串行的,不管是几核的cup。当一个协程在运行的时候,其他协程必须挂起。

       协程应用在go、java、python等语言里

       

    参考:https://www.jianshu.com/p/6dde7f92951e

  • 相关阅读:
    nginx简单配置
    解决 eclipse出现 Address already in use: bind
    JavaScript 正则表达式学习
    RabbitMQ的介绍与spring整合
    RabbitMQ的安装与客户端的简单实用
    java中的break与continue
    书单
    (七)SpringBoot2.0基础篇- application.properties属性文件的解析及获取
    (六)SpringBoot2.0基础篇- MyBatis、Redis整合(JedisCluster集群连接)
    (五)SpringBoot2.0基础篇- Mybatis与插件生成代码
  • 原文地址:https://www.cnblogs.com/smallzhen/p/12104777.html
Copyright © 2011-2022 走看看