美文网首页
同步/异步与阻塞/非阻塞

同步/异步与阻塞/非阻塞

作者: 一许青衫一 | 来源:发表于2018-05-31 21:22 被阅读0次

最近在看Python面试题,里面提到了异步,然后想起之前找资料弄清同步/异步与阻塞/非阻塞的区别,现在又忘记了。看来学到知识还是需要输出来,才能真正的理解记忆。

   我们经常看到某程序是采用异步阻塞的,这其中涉及到了两个角度的判断。 1. 消息通知机制。2. 等待消息通知时的状态。
总结来说:同步/异步关注的是消息通知的机制,阻塞/非阻塞关注的是等待消息通知的状态。

1、 同步与异步

  当依赖任务需要被依赖任务的完成之后,才能继续进行,这种叫做同步。当依赖任务不需要被依赖的任务的完成,只需要告诉被依赖任务需要做什么,然后执行自己的任务,不用管被依赖任务的完成情况,这叫做异步。
  接下来举个例子,在银行排队,最原始的排队,等着前面一个个办理完业务,这叫同步。慢慢,银行开始人性化了,有了叫号系统。你拿了自己的号码,然后做到休息的椅子上,等待柜员人员到时候叫你的号码,这就叫异步。
  综上看来,同步的情况下,是由处理消息者自己去等待消息是否被触发,例如自己观察前梦排队的还有多少人。而异步的情况下是由触发机制来通知处理消息,一般的触发机制有通知,状态与回调机制。因此,异步机制中,处理消息者与触发机制之间就需要一个连接的桥梁。

2、阻塞与非阻塞

  阻塞与非阻塞关注的是在等待消息时的状态。阻塞调用是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务。函数只有在得到结果之后才会返回。非阻塞调用是指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立即返回。虽然表面上看非阻塞的方式可以明显的提高CPU的利用率,但是也带来了另外一种后果就是系统的线程切换增加。增加的CPU执行时间能不能补偿系统的切换成本需要好好评估。
  再看看实例,刚才的排队情况,现在无所谓是同步/异步的消息通知机制,再等待消息通知的过程中,如果我玩手机和别人聊天,这就是非阻塞,如果一直傻傻的什么都不干,干等着消息,那就是同步。综合看来异步非阻塞效率最高,但是不同情况,需要的东西不同,需要选择最适合的模式。

参考文章:

《聊聊同步、异步、阻塞与非阻塞》--猿码道(https://www.jianshu.com/p/aed6067eeac9)

相关文章

  • UNIX 的5种IO模型介绍

    IO模型同步、异步、阻塞、非阻塞socket阻塞与非阻塞,同步与异步 同步和异步 同步/异步主要针对C端-同步就像...

  • 谈论:同步异步阻塞非阻塞.md

    同步/异步:关注的方式(是否主动) 阻塞/非阻塞: 同步阻塞BIO: 同步非阻塞NIO: 异步非阻塞: 异步阻塞:

  • BIO NIO AIO

    BIO:同步阻塞IONIO:同步非阻塞IOAIO:异步非阻塞IO先弄清楚同步、异步,阻塞、非阻塞概念。 io操作分...

  • 阻塞非阻塞 同步异步 IO模型及其应用 NIO实现原理

    1.同步异步概念 2.阻塞非阻塞概念 3.常见I/O模型:同步阻塞IO,同步非阻塞IO,异步阻塞IO,异步非阻塞I...

  • IO模型

    原文参考链接 四种状态 同步 异步 阻塞 非阻塞 IO分类 同步阻塞IO 同步非阻塞IO 异步非阻塞IO注意: 没...

  • Linux网络IO模型

    什么是同步与异步、阻塞与非阻塞 引用知乎 怎样理解阻塞非阻塞与同步异步的区别? 上面的一个回答,很生动的说明了同步...

  • 同步异步和阻塞非阻塞_190220

    简介 一个知乎连接说的很好作者:严肃链接:同步异步和阻塞非阻塞来源:知乎“阻塞”与"非阻塞"与"同步"与“异步"不...

  • 01 基本概念

    同步 异步 阻塞 非阻塞 同步与异步关注的是消息通信机制,阻塞与非阻塞关注的是程序在等待调用结果(消息,返回值)时...

  • 阻塞,非阻塞,同步,异步

    阻塞,非阻塞,同步,异步

  • I/O模型笔记

    #0 同步异步、阻塞非阻塞 同步异步是从消息通知机制角度来说的 阻塞与非阻塞是从程序(线程)等待消息通知时的状态角...

网友评论

      本文标题:同步/异步与阻塞/非阻塞

      本文链接:https://www.haomeiwen.com/subject/ahscsftx.html