zoukankan      html  css  js  c++  java
  • 并发/并行,阻塞/非阻塞,同步/异步

    1.阻塞,非阻塞

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

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

    3.并发, 并行
      并发是指一个时间段内,有几个程序都在同一个CPU上运行,但任意一个时刻点上只有一个程序在处理机上运行。
      并行是指一个时间段内,有几个程序都在几个CPU上运行,任意一个时刻点上,有多个程序在同时运行,并且多道程序之间互不干扰。
     
    dayehui
  • 相关阅读:
    JavaScript Patterns 5.7 Object Constants
    JavaScript Patterns 5.6 Static Members
    JavaScript Patterns 5.5 Sandbox Pattern
    JavaScript Patterns 5.4 Module Pattern
    JavaScript Patterns 5.3 Private Properties and Methods
    JavaScript Patterns 5.2 Declaring Dependencies
    JavaScript Patterns 5.1 Namespace Pattern
    JavaScript Patterns 4.10 Curry
    【Android】如何快速构建Android Demo
    【Android】如何实现ButterKnife
  • 原文地址:https://www.cnblogs.com/zrh-960906/p/12182830.html
Copyright © 2011-2022 走看看