进程、线程、协程理解

原文: 一个故事讲完进程、线程和协程

https://mp.weixin.qq.com/s/zuWRx1FGuBC-_HwuA7jK3whtml

1. 理解:

批处理:指一个处理完了另外一个再处理;并发

进程:即每一个程序的执行的代码(所有流程),加上执行现场(当前执行场景);线程

并发:由于多个程序在一个CPU上不断切换,人类看起来如同程序在同时执行,这就是并发;
并行:即多个程序同时在多个CPU上执行,就是并行;协程

线程:进程内部,有多个执行流程(加上每一个流程的执行场景),这个流程就是线程;htm

协程:即线程内部,转换运行控制权;blog

2.总结:

进程是:一个CPU状况下,多个程序分别使用机器资源(CPU或硬盘等)的概念;
线程是:一个进程状况下,多个执行流程(即线程)分别使用分配给该进程的机器资源的概念;
协程是:一个线程状况下,多个执行流程(即协程)由线程控制,分别使用分配给该线程的机器资源的概念;进程

3.协程的理解

进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源;
线程是处理器调度的基本单位;
协程能够理解为线程内部调度的基本单位。资源

协程的优点在于:处理器调度(即线程)会有很大的场景切换消耗,而对处理器来讲,协程属于同一个调度,切换消耗较小。get

本质就是各类抽象,用于提高小路,不用纠结太深,只要能够更好的解决问题提高效率便可。博客

4.参考:

  1. 进程和线程、协程的区别 - lxmhhy - 博客园 http://www.javashuo.com/article/p-zsjxnymx-eg.html
    注:总结的很好,能够参考理解;
  2. 协程的好处有哪些? - 知乎 https://www.zhihu.com/question/20511233/answer/75957672
    注:这个回答说了,每种代码的理解都不一样,理解侧重点也不一样。不用纠结,协程只是一种解决问题的手段,也能够用其余方式实现(可能效率低),本质没有太多不一样。
    学会结合具体场景,能够使用而后解决问题便可。

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

相关文章
相关标签/搜索