二十二、同步/异步和阻塞/非阻塞

一. 同步/异步

  1. 同步和异步一般是两个有关联(或调用)关系的任务块(或方法块)之间通讯交互和执行时序的一种描述。
  2. 同步:
    1)被调用模块在执行完其全部逻辑后才返回;
    2)调用模块需等待被调用模块执行完其代码逻辑后,再继续执行其逻辑;
    3)两任务模块在一次调用期间不会出现时间重叠;
  3. 异步:
    1)被调用模块在返回结果后,仍需一定时间才能完成其逻辑;
    2)调用模块需等待被调用模块执行完其代码逻辑后,再继续执行其逻辑;
    3)两任务模块在一次调用期间可能会出现时间重叠;

二. 阻塞/非阻塞

  1. 阻塞/非阻塞指是否阻塞当前线程, 阻塞的是线程;
  2. 是描述某个程序执行需要依赖某个前置条件,此时若条件不满足时:
    1)如果选择等待就是阻塞;
    2)如果不等待直接返回就是非阻塞;
  3. 例子:
    1)BIO等待数据到达;
    2)等待释放锁;

参考

  1. https://en.wikipedia.org/wiki/Asynchronous_system
  2. stackoverflow: asynchronous-vs-synchronous-execution-what-does-it-really-mean
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容