详细介绍 进程、线程和协程的区别

 更新时间:2017年03月28日 10:15:12   作者:维C果糖  
这篇文章主要介绍了详细介绍 进程、线程和协程的区别的相关资料,需要的朋友可以参考下

详解 进程、线程和协程的区别

首先,给出“进程、线程和协程”的特点:

  • 进程:拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度;
  • 线程:拥有自己独立的栈和共享的堆,共享堆,不共享栈,标准线程由操作系统调度;
  • 协程:拥有自己独立的栈和共享的堆,共享堆,不共享栈,协程由程序员在协程的代码里显示调度。

接下来,以一个形象的例子,进一步讲述“进程、线程和协程”三者之间的区别:

假设有一个单核的操作系统,系统上没有其它的程序需要运行,现有两个线程 A 和 B,A 和 B 在单独运行时都需要 10 秒来完成自己的任务,而且任务都是运算操作,线程 A 和 B 之间没有竞争和共享数据的问题。现在让 A 和 B 两个线程并行,则操作系统会不停的在 A 和 B 两个线程之间切换,达到一种伪并行的效果。

如果操作系统切换的频率是每秒一次,切换的成本是 0.1 秒(主要是栈切换),则总共需要 20 + 19 * 0.1 = 21.9 秒;如果使用协程的方式,可以先运行协程 A,A 结束的时候让位给协程 B,只发生一次切换,则总共需要 20 + 1 * 0.1 = 20.1 秒。如果操作系统是双核的,而且线程是标准线程,那么线程 A 和 B 可以达到真的并行,则总时间为 10 秒;而协程的方式仍然需要 20.1 秒的时间。

感谢阅读,希望能 帮助到大家,谢谢大家对本站的支持!

相关文章

  • HarmonyOS Next音乐播放器项目实现代码

    HarmonyOS Next音乐播放器项目实现代码

    HarmonyOS Next音乐播放器页面是一款基于鸿蒙生态系统开发的现代化音乐播放页面组件,采用了ArkTS语言和鸿蒙原生组件开发,该应用实现了基本的音乐播放功能,包括播放、暂停、停止以及进度条拖动等交互操作,展示了HarmonyOS应用开发的典型特性和技术架构
    2025-03-03
  • 鸿蒙开发搭建flutter适配的开发环境

    鸿蒙开发搭建flutter适配的开发环境

    文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutter doctor检测环境、创建项目、编译HAP包以及在真机上运行项目,打包鸿蒙Flutter应用的测试包和正式包的方法,并介绍了常见问题的解决方法
    2024-12-12
  • Android 微信文件传输助手文件夹

    Android 微信文件传输助手文件夹

    本文主要介绍查找Android 微信文件传输助手文件夹,文件传输助手是电脑微信和手机微信传输文件的好工具,这里找到文件夹,更加便于同学们的使用
    2016-09-09
  • 编码史记

    编码史记

    昨天听了一个同事的编码讲座,很精彩。想起了要写这个文章分享一下各种编码是如何产生的
    2012-04-04
  • 使用postman进行接口测试的方法(测试用户管理模块)

    使用postman进行接口测试的方法(测试用户管理模块)

    这篇文章主要介绍了使用postman进行接口测试的方法(测试用户管理模块),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-01-01
  • 网络编程基础(局域网、ip、子网掩码、网关、DNS)概念理解

    网络编程基础(局域网、ip、子网掩码、网关、DNS)概念理解

    这篇文章主要介绍了网络编程基础(局域网、ip、子网掩码、网关、DNS)概念理解,包括局域网的构成、IP地址的分类和作用、子网掩码的作用以及网络通信规则等
    2025-02-02
  • 关于Git远程与本地冲突的解决方法

    关于Git远程与本地冲突的解决方法

    这篇文章主要给大家介绍了关于Git远程与本地冲突的解决方法,文中给出了详细的解决方法,相信对大家具有一定的参考价值,有需要的朋友们下面来一起看看吧。
    2017-04-04
  • 深入浅析ELK原理与简介

    深入浅析ELK原理与简介

    ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。这篇文章主要介绍了ELK原理与介绍,需要的朋友可以参考下
    2021-09-09
  • Hadoop 文件系统命令行基础详解

    Hadoop 文件系统命令行基础详解

    这篇文章主要介绍了Hadoop 文件系统命令行基础,Hadoop 命令行最常用指令在文章给大家一一罗列出 ,需要的朋友可以参考下
    2019-07-07
  • 详解ansible批量管理服务

    详解ansible批量管理服务

    这篇文章主要介绍了ansible批量管理服务的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08

最新评论