美文网首页
廖雪峰老师对同步异步的简单解释

廖雪峰老师对同步异步的简单解释

作者: DoraLvor | 来源:发表于2017-07-17 16:04 被阅读48次

由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问题。举个例子来说,比如要把100M的数据写入磁盘,CPU输出100M的数据只需要0.01秒,可是磁盘要接收这100M数据可能需要10秒,怎么办呢?有两种办法:

第一种是CPU等着,也就是程序暂停执行后续代码,等100M的数据在10秒后写入磁盘,再接着往下执行,这种模式称为同步IO;

另一种方法是CPU不等待,只是告诉磁盘,“您老慢慢写,不着急,我接着干别的事去了”,于是,后续代码可以立刻接着执行,这种模式称为异步IO。

同步和异步的区别就在于是否等待IO执行的结果。好比你去麦当劳点餐,你说“来个汉堡”,服务员告诉你,对不起,汉堡要现做,需要等5分钟,于是你站在收银台前面等了5分钟,拿到汉堡再去逛商场,这是同步IO。

你说“来个汉堡”,服务员告诉你,汉堡需要等5分钟,你可以先去逛商场,等做好了,我们再通知你,这样你可以立刻去干别的事情(逛商场),这是异步IO。

很明显,使用异步IO来编写程序性能会远远高于同步IO,但是异步IO的缺点是编程模型复杂。想想看,你得知道什么时候通知你“汉堡做好了”,而通知你的方法也各不相同。如果是服务员跑过来找到你,这是回调模式,如果服务员发短信通知你,你就得不停地检查手机,这是轮询模式。总之,异步IO的复杂度远远高于同步IO。

操作IO的能力都是由操作系统提供的,每一种编程语言都会把操作系统提供的低级C接口封装起来方便使用,Python也不例外。我们后面会详细讨论Python的IO编程接口。

相关文章

  • 廖雪峰老师对同步异步的简单解释

    由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问题。举个例子来说,比如要把1...

  • 从零开始使用Github

    本文是学习完廖雪峰老师Git教程后的精简实用版总结,再次对廖雪峰老师表示感谢。 1 安装git Git是目前最简单...

  • 如何用git将代码上传到码云

    安装Git 建议直接浏览廖雪峰老师的安装介绍廖雪峰老师的安装Git教程 如果你想系统的了解Git的话,廖雪峰老师的...

  • 将自己的项目放到码云上托管

    安装Git 建议直接浏览廖雪峰老师的安装介绍廖雪峰老师的安装Git教程 如果你想系统的了解Git的话,廖雪峰老师的...

  • 安装Git

    建议直接浏览廖雪峰老师的安装介绍廖雪峰老师的安装Git教程 如果你想系统的了解Git的话,廖雪峰老师的这个网站是个...

  • 生成batch生成器的简单方法

    关键在于yield的用法,廖雪峰老师的这篇文章解释得非常清楚详细。以下是生成batch训练训练集的简单方法: 方法...

  • SQL 相关内容

    参考廖雪峰老师的SQL教程

  • 如何将代码上传到Gitee

    转自 这里 安装Git 建议直接浏览廖雪峰老师的安装介绍廖雪峰老师的安装Git教程 如果你想系统的了解Git的话,...

  • 在ubuntu 16.04 使用git版本控制工具,关联gith

    注明:在此参考了廖雪峰老师关于git的精彩讲解。 1.关于在github上添加远程仓库可以参考廖雪峰老师的教程。 ...

  • IO中同步、异步与阻塞、非阻塞的区别

    一、同步与异步 同步/异步他们是消息的通知机制。 1.概念解释 A、同步 所谓同步,就是在发出一个功能调用时,在没...

网友评论

      本文标题:廖雪峰老师对同步异步的简单解释

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