异步学习

105 阅读2分钟

阻塞

  • 程序在还没得到计算资源的时候,被挂起的状态
  • 程序在等待某个操作完成的期间,自身无法继续干其他事情,则改程序在该操作上市阻塞的
  • 阻塞的形式:网络I/O阻塞,磁盘I/O阻塞,用户输入阻塞

非阻塞

  • 程序在等待某操作的过程当中,资深不被阻塞,可以继续干其他事情,则该程序在该操作上是非阻塞的
  • 非阻塞不是在任何程序级别,任何情况下都可以存在的
  • 仅在程序封装的级别可以囊括独立的子程序单元的时候,才可能存在非阻塞的状态

同步

  • 不同程序单元为了完成某个任务,在执行过程中需要靠某种通信方式以协调一致,称为这些程序单元是同步执行的
  • 同步就意味着有序

异步

  • 为了完成某个任务,不同程序单元之间过程中无需通信协调,也能完成任务的方式
  • 异步就意味着无序

并发

  • 并发描述的是程序的组织结构,程序要被设计成多个可独立执行的子任务
  • 以利用有限的计算机资源使得多个任务可以被实时或者接近实时执行为目的

并行

  • 并行描述的是程序的执行状态,多个任务同时被执行
  • 以利用富余计算资源加速完成多个任务为目的

异步编程

  • 以进程、线程、协程、函数/方法作为执行任务程序的基本单元,结合回调、时间循环、信号量等机制,来提高程序整体执行效率和并发能力的编程方式。
  • 某个程序在运行的时候,能够根据已经执行的指令准确判断接下来要进行哪个具体操作,就是同步程序,反之异步程序。
  • 程序下一步行为往往依赖于上一步执行结果,如何知晓上次异步调用已经完成并获取结果,回调成为了选择