美文网首页
进程、线程、协程区别

进程、线程、协程区别

作者: VictorHong | 来源:发表于2020-09-07 10:23 被阅读0次

进程、线程

进程是系统资源分配的最小单位, 系统由一个个进程(程序)组成 一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。

  • 文本区域存储处理器执行的代码
  • 数据区域存储变量和进程执行期间使用的动态分配的内存;
  • 堆栈区域存储着活动过程调用的指令和本地变量。
进程与线程

线程属于进程

线程共享进程的内存地址空间

线程几乎不占有系统资源 通信问题: 进程相当于一个容器,而线程而是运行在容器里面的,因此对于容器内的东西,线程是共同享有的,因此线程间的通信可以直接通过全局变量进行通信,但是由此带来的例如多个线程读写同一个地址变量的时候则将带来不可预期的后果,因此这时候引入了各种锁的作用,例如互斥锁等。

同时多线程是不安全的,当一个线程崩溃了,会导致整个进程也崩溃了,即其他线程也挂了, 但多进程而不会,一个进程挂了,另一个进程依然照样运行。

线程和进程的上下文切换

进程切换分3步:

  1. 切换页目录以使用新的地址空间
  2. 切换内核栈
  3. 切换硬件上下文

而线程切换只需要第2、3步,因此进程的切换代价比较大

协程

协程,英文Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。

协程是属于线程的。协程程序是在线程里面跑的,因此协程又称微线程和纤程等

协没有线程的上下文切换消耗。协程的调度切换是用户(程序员)手动切换的,因此更加灵活,因此又叫用户空间线程.

原子操作性。由于协程是用户调度的,所以不会出现执行一半的代码片段被强制中断了,因此无需原子操作锁。

进程-线程-协程

协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。协程的暂停完全由程序控制,线程的阻塞状态是由操作系统内核来进行切换。

好处:

性能得到了很大的提升,不会像线程切换那样消耗资源。


参考链接:

  1. 线程,进程,协程详细解释

  2. 进程、线程和协程的概念

相关文章

  • Go 协程调度的个人理解

    1.1 协程与进程的区别 首先,我理解的操作系统调度等级为 进程 —— 线程 —— 协程。其中进程和线程的区别是本...

  • Go语言学习笔记七(并发编程)

    协程机制 Golang 线程和协程的区别 备注:需要区分进程、线程(内核级线程)、协程(用户级线程)三个概念。 进...

  • 说一说协程

    首先,我们了解一下进程,线程和协程三个概念之间的区别 进程,线程,协程区别 进程 拥有自己独立的堆和栈,既不共享堆...

  • 理解协程

    一、进程、线程、协程的区别 进程:操作系统中分配资源的基本单位 线程:操作系统中调度资源的基本单位 协程:比线程更...

  • 不同语言的协程示例

    进程和线程、协程的区别async 函数的含义和用法上面两篇文章介绍进程,线程, 和协程,以及javascript中...

  • 了解Kotlin协程你需要加深了解的 Java 线程

    协程铺垫知识 —— JAVA 线程 Question: 线程和进程的区别?cpu 个数、cpu 核心数、cpu ...

  • 聊聊并发,进程通信方式,go协程简单应用场景

    开篇提问 知道并发,并行,线程,协程概念吗?或者知道大概含义吗? 有线程为什么还要有协程?区别是什么? 『进程』通...

  • python常用知识

    多线程,多进程,协程进程池 协程 字典 列表 函数 文件操作

  • 进程、线程、协程区别

    进程、线程 进程是系统资源分配的最小单位, 系统由一个个进程(程序)组成 一般情况下,包括文本区域(text re...

  • 进程、线程、协程 区别

    简单总结 进程是资源分配的单位 线程是操作系统调度的单位 进程切换需要的资源很最大,效率很低 线程切换需要的资源一...

网友评论

      本文标题:进程、线程、协程区别

      本文链接:https://www.haomeiwen.com/subject/tsekektx.html