• 并发/并行,阻塞/非阻塞,同步/异步


    1.阻塞,非阻塞

      一个线程/进程经历的5个状态,创建,就绪,运行,阻塞,终止。各个状态的转换条件如上图,其中有个阻塞状态,就是说当线程中调用某个函数,需要IO请求,或者暂时得不到竞争资源的,操作系统会把该线程阻塞起来,避免浪费CPU资源,等到得到了资源,再变成就绪状态,等待CPU调度运行。
    定义:
      阻塞调用是指调用结果返回之前,调用者会进入阻塞状态等待。只有在得到结果之后才会返回。
      非阻塞调用是指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
     
    2.同步,异步
    定义
      同步:在发出一个同步调用时,在没有得到结果之前,该调用就不返回。
      异步:在发出一个异步调用后,调用者不会立刻得到结果,该调用就返回了。
      
      异步和非阻塞的定义比较像,两者的区别是异步是说调用的时候结果不会马上返回,线程可能被阻塞起来,也可能不阻塞,两者没关系。非阻塞是说调用的时候,线程肯定不会进入阻塞状态。

    同步阻塞调用:得不到结果不返回,线程进入阻塞态等待。
    同步非阻塞调用:得不到结果不返回,线程不阻塞一直在CPU运行。
    异步阻塞调用:去到别的线程,让别的线程阻塞起来等待结果,自己不阻塞。
    异步非阻塞调用:去到别的线程,别的线程一直在运行,直到得出结果。

    3.并发, 并行
      并发是指一个时间段内,有几个程序都在同一个CPU上运行,但任意一个时刻点上只有一个程序在处理机上运行。
      并行是指一个时间段内,有几个程序都在几个CPU上运行,任意一个时刻点上,有多个程序在同时运行,并且多道程序之间互不干扰。
     
    dayehui
  • 相关阅读:
    【CFD之道】2018年原创文章汇总
    【OpenFOAM案例】03 Docker安装OpenFOAM
    【OpenFOAM案例】02 自己动手
    【OpenFOAM案例】01 elbow
    Fluent动网格【13】:网格光顺总结及实例
    Fluent动网格【12】:扩散光顺
    Fluent动网格【10】:区域运动案例
    Fluent动网格【11】:弹簧光顺
    happyChat开发系列:使用websocket.io实现双向通信的乐聊大前端开发
    vue,vuex的后台管理项目架子structure-admin,后端服务nodejs
  • 原文地址:https://www.cnblogs.com/zrh-960906/p/12182830.html
Copyright © 2020-2023  润新知