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

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

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

    1. 理解:

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

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

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

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

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

    2.总结:

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

    3.协程的理解

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

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

    本质就是各种抽象,用于提升小路,不用纠结太深,只要可以更好的解决问题提升效率即可。

    4.参考:

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

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

  • 相关阅读:
    php 类 成员变量 $this->name='abc'
    php类的实现
    php 生成类的对象 $a=new test();
    php 对象的执行
    php 对象调用方法
    php 连接字符串. ZEND_ASSIGN_CONCAT/ZEND_CONCAT原理
    function 的声明
    vim用法
    ubuntn系统下将文件拷贝到优盘中及挂载概念理解
    windows远程连接linux-安装xfce界面,ubuntn添加新用户
  • 原文地址:https://www.cnblogs.com/buwuliao/p/9142699.html
Copyright © 2011-2022 走看看