您当前的位置:首页 > 电脑百科 > 硬件技术 > 硬件知识

计算机与操作系统中无处不在的同步与异步

时间:2022-05-06 13:56:54  来源:  作者:醒醒老师

今天读了一本计算机底层的书,书中详细阐述了同步与异步在系统底层方面的处理方法。这篇文章就来讨论一下什么是同步,什么是异步,它们在编程中到底意味着什么。要想写出高性能高并发的代码,这是很关键的基础。

相信很多同学在开始接触到同步异步这两个词的时候大脑一片懵逼,没错,这两个看上去很像实际上也很像的两个词,曾经也让本人深度困扰,以至于夜不能寐。这两个词具体的含义到底是什么呢?

先来看一个咱们身边常见的场景:

美好的一天从打卡开始,现在起你化身为

苦逼程序员

假设现在老板安排给你一个十分紧急的开发任务,让你下班前必须整出来(万恶的资本主义)。为了确保能够完成任务,老板就坐在你旁边看着。

你心里肯定一万头羊驼奔腾而过:“***,这得多闲,干嘛盯着老子,你就不能去干别的?我还怎么摸鱼”

老板仿佛看透你的小心思:“我就在这等着,你写完前我哪儿都不去,别墨迹抓紧整。”

计算机与操作系统中无处不在的同步与异步

 

在上面这个例子中,老板交代给你任务后什么都不做一直等待直到你完成这就是同步的形式。

第二天老板又分配给你新的任务:“小伙子能力真不错,不用多久你就可以升职加薪、当上总经理、出任CEO、迎娶白富美、走上人生巅峰了。不要激动,来,先把今天这个任务完成,不着急,写完告诉我一声就行。”

老板说完就回去刷抖音了,而你经过四五个小时的努力摸鱼后,简简单单就码完了:“老板,我写完了,你来瞅瞅。”

计算机与操作系统中无处不在的同步与异步

 

这个例子中老板安排完以后就干别的事情了,而你写完了告诉老板任务完成,这种就属于异步的概念。

异步相对于同步最明显的不同就是你工作的时候老板在刷剧,这两件事情同时发生,因此从理论上讲异步的效率要高于同步,对大多数场景而言是这样的。

so,so,so!果真遇到在身后盯着写代码的老板,三十六计走为上策!

下面这个场景用来理解同步异步更为鲜明

打电话vs发邮件

作为苦逼程序员不能只会埋头搬砖,工作中总得与客户交流,最常用的方式就是打电报。。。啊不,是打电话。

通常我们打电话都是一个人说另一个人听,对方讲话的时候我方需要等待,等对方讲完再接着说,而且每一步都依赖之前的讲话。这里的重点是产生了等待,不可避免地等待,这种方式就是同步的特点。

计算机与操作系统中无处不在的同步与异步

 

作为搬砖码农,另外一种比较常用的方式就是发邮件,尤其是在公司内部。没有人为了等你的邮件什么都不做,他可以摸摸鱼,充下电,上个厕所等等。同样的你发完邮件也不需要一直等着对方的回复,这期间可以做其他有意义的事情。

计算机与操作系统中无处不在的同步与异步

 

在这种方式中,写邮件和收件人摸鱼这两件事情同时发生着,双方都不需要等待,两件事情也不存在依赖,这就是异步的方式。

编程中的同步

现在回到编程的主题,上面场景展示了生活中的同步异步的意义,那么在程序开发中又该怎样理解呢?

一般情况下函数的调用都是这样的

/**JAVAscript */
function A( ){
    //等待函数b完成
    function B( )
    //继续后面的运行
}

函数A调用函数B,那么在B完成前A都不会执行后续的代码,就像这样:

计算机与操作系统中无处不在的同步与异步

 

从上图看到B执行期间A什么都不能做,这就是同步。

下面这段Node代码就是采用同步的方式执行磁盘文件读取,属于阻塞式I/O

/**JavaScript */
import { readFileSync } from 'fs';

readFileSync('<directory>');//程序暂停运行,等待I/O返回数据
//文件读取完成后继续运行

同步编程对程序员是最好理解的,一步完成再做下一步,但代价就是在某些场景(例如I/O操作)下这种方式的效率不够高效,因为任务没法同时进行。

编程中的异步

有同步就有异步,在理解了前面的内容后相信很快就能掌握异步的要领。

一般来说在程序开发中,一些耗时比较高的任务都是采用异步的方式,例如磁盘读写,网络数据收发,数据库命令的执行等。同样以磁盘文件读取为例,使用异步函数即使文件还没有读取完毕后面的代码也能执行。

/**javascript */
import { readFile } from 'fs';

readFile('<directory>', callback);//readFile函数立即返回
//不会阻塞程序的执行
//某个时间点文件读取完成后执行callback回调

异步的重点在于调用函数后接下来的程序可以继续和文件读取同时执行,这就是高效之处。

然而,异步执行对程序员来说是一种负担,无论在阅读还是编写上都不容易理解。

有的同学可能会问,同步的情况下可以得到函数的结果继续执行,那么异步的时候又怎么知道函数执行完成了呢?

这里一分为二:

  1. 不需要关心结果,执行就ok
  2. 需要结果进行更多的操作

第一种无需讨论,比较简单。

第二种情况通常有两种方式,一种是通知机制,任务完成后发送信号通知上一级,例如linux的signal方式。还有一种就是回调,就是我们常说的callback。

最后需要注意的是,并非所有的情况下异步就一定比同步高效,还要结合具体的业务或者I/O复杂程度来分析。但是不管何时何地,同步意味着双方要相互等待,相互依赖,二异步则意味着双方相互独立,各行其道。希望这篇文章对大家理解这两个重要的概念有所帮助。



Tags:计算机   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
国家计算机病毒应急处理中心监测发现14款违规移动应用
国家计算机病毒应急处理中心近期通过互联网监测发现,14款移动App存在隐私不合规行为。1、无隐私政策。涉及2款App:《晁藤》(版本1.3.36,应用宝)《门诊大厅》(版本4.8.0,当快软件园)...【详细内容】
2024-03-22  Search: 计算机  点击:(25)  评论:(0)  加入收藏
鸿蒙开发岗平均月薪超1.8万,成为计算机人才和程序员的求职新选择!
智联招聘发布的《2024年春招市场行情周报(第一期)》显示,2023年9-12月,鸿蒙相关职位数同比增速从33.8%攀升至216.1%,鸿蒙相关职位的投递人数同比增速从132.1%攀升至380.1%。春节...【详细内容】
2024-02-26  Search: 计算机  点击:(28)  评论:(0)  加入收藏
量子计算机是什么?跟现在的计算机相比优缺点是什么?
量子计算机是什么?跟现在的计算机相比优缺点是什么? 随着科技的不断发展,计算机技术也取得了巨大的进步。然而,随着摩尔定律的趋近于极限,传统的计算机技术面临着许多挑战。这时...【详细内容】
2024-02-23  Search: 计算机  点击:(45)  评论:(0)  加入收藏
量子计算机:未来电脑的革命性技术
在科技的广袤天空中,量子计算机如一颗璀璨的新星,以其独特的光芒预示着未来电脑的革命性变革。这项令人瞩目的技术不仅代表着计算机科学的最前沿,更承载着人类对于速度和效率的...【详细内容】
2024-02-23  Search: 计算机  点击:(51)  评论:(0)  加入收藏
为什么计算机需要十六进制?
今天简单聊聊十六进制。实际上计算机本身是不需要十六进制的,计算机只需要二进制,需要十六进制的是人。每个十六进制中的数字代表4个比特,你可以非常直观的从十六进制中知道对...【详细内容】
2024-02-22  Search: 计算机  点击:(54)  评论:(0)  加入收藏
计算机视觉:重塑人类感知的革命性技术
今天,我们来聊一聊计算机视觉,也就是CV(Computer Vision)。CV是一种让计算机“看懂”图片和视频的技术。人类通过眼睛来感知环境,而CV就是让计算机可以模仿人的视觉系统,通过给计...【详细内容】
2024-02-22  Search: 计算机  点击:(44)  评论:(0)  加入收藏
计算机服务器中了mallox勒索病毒解密方案计划,勒索病毒解密措施
计算机技术的不断应用与发展,为企业的生产运营提供了有利条件,但网络安全威胁无处不在。近期,广西某生物制药企业的计算机服务器遭到了mallox勒索病毒攻击,导致企业的计算机所有...【详细内容】
2024-01-26  Search: 计算机  点击:(91)  评论:(0)  加入收藏
量子计算机真相揭秘,一篇文章颠覆你的认知
你看过《三体》吗?在刘慈欣笔下,三体人用一种叫“智子”的黑科技干扰了人类的实验,从而锁死了人类的技术。而在现实世界,一把无形的“锁”其实也悄然逼近了我们,它就是芯片。随着...【详细内容】
2024-01-23  Search: 计算机  点击:(28)  评论:(0)  加入收藏
生成对抗网络(GAN)在计算机视觉领域中的应用
生成对抗网络(GAN)是一种在计算机视觉领域中广泛应用的深度学习模型。它由一个生成器网络和一个判别器网络组成,通过对抗训练的方式实现图像的生成和判别。GAN在计算机视觉中的...【详细内容】
2024-01-15  Search: 计算机  点击:(83)  评论:(0)  加入收藏
计算机基础:掌握基本原理和操作方法,培养计算机思维
计算机基础是计算机科学的基石,其原理与功能的深入理解是职业发展和个人研究的必要条件。本文将会介绍计算机基础的主要内容和重要性。计算机的起源可以追溯到二十世纪四五十...【详细内容】
2024-01-02  Search: 计算机  点击:(62)  评论:(0)  加入收藏
▌简易百科推荐
华为笔记本将接入盘古大模型!全新华为MateBook X Pro即将发布
快科技4月10日消息,华为官方宣布,华为将于4月11日举办新品发布会。据了解,此次发布会将推出全新的华为MateBook X Pro,而预热海报的主题是“轻且强”。这里的“强”不仅仅是指性...【详细内容】
2024-04-10    快科技  Tags:华为笔记本   点击:(11)  评论:(0)  加入收藏
走进光纤世界:揭秘光纤接口的四大类型
光纤技术作为现代通信的基石,已经广泛应用于各种数据传输场景中。它以高速率、长传输距离、抗干扰性强、低衰减以及带宽占用小等优点,成为了数据通信领域中的重要物理层连接方...【详细内容】
2024-04-10  胜为光通信服务商    Tags:光纤接口   点击:(7)  评论:(0)  加入收藏
什么是光纤?光纤的原理是什么?你能想象没有光纤通讯的世界么?
一根像头发丝一样细的光纤改变了什么?说它改变了世界,一点也不为过。还记得老式的电脑传输吗?你下载一首歌可能需要3分钟,一部电影可能需要两小时,那时候叫做“拨号上网”;后来铜...【详细内容】
2024-04-10  知识TNT    Tags:光纤   点击:(10)  评论:(0)  加入收藏
五个多屏使用笔记本的注意事项
你是否发现自己需要频繁地在窗口之间切换,或者在你的笔记本电脑显示屏上挤满了多个窗口?是时候考虑购买第二个显示器了。 多个显示器可以显著提高工作效率,因为你有更多的屏幕...【详细内容】
2024-03-20  梁佳乐  微信公众号  Tags:笔记本   点击:(16)  评论:(0)  加入收藏
开源鸿蒙适配芯片到底都做了哪些工作?
随着智能设备市场的不断扩大和技术的进步,鸿蒙操作系统成为了备受瞩目的开源项目。作为一个全场景智能生态的基础,鸿蒙不仅仅是一个操作系统,还涉及到硬件层面的适配。然而,开源...【详细内容】
2024-01-16  触觉智能    Tags:鸿蒙   点击:(60)  评论:(0)  加入收藏
电脑主板上的纽扣电池没电时,会出现什么问题呢?
什么是纽扣电池?电脑主板上的纽扣电池通常被称为CMOS电池。是用于提供电源给主板上的实时时钟(RTC)和存储BIOS设置数据的小型电池。 纽扣电池的寿命是多久?纽扣电池的寿命通常在...【详细内容】
2024-01-14  新视力工控电脑  今日头条  Tags:纽扣电池   点击:(123)  评论:(0)  加入收藏
微软将增加Copilot专用按键 推动人工智能时代到来
微软宣布将新增Copilot键,专门用于Windows PC键盘上的人工智能(AI)助手。这意味着新的一年里,Windows将迎来重大转变,走向更为智能化的未来,让人工智能从硬件到软件全方位融入,打造...【详细内容】
2024-01-05  PChome电脑之家    Tags:Copilot   点击:(144)  评论:(0)  加入收藏
AI领衔!2023年数码硬件大事件盘点 哪个技术让你印象深刻
2023年在数码硬件领域里许许多多令人兴奋的新产品和新技术正式问世,给玩家用户们都带来了全新的体验。在这篇文章中,我们将进行2023年的数码大事件进行盘点,看看这其中哪个给你...【详细内容】
2024-01-03    中关村在线  Tags:数码硬件   点击:(50)  评论:(0)  加入收藏
双头Type-C接口:解析充电方向的奥秘
随着科技的飞速发展,电子设备之间的连接与充电方式也在不断地革新。其中,Type-C接口以其高效、便捷的特性,逐渐成为了主流。特别是双头Type-C线,更是为用户带来了前所未有的便利...【详细内容】
2024-01-02  小米地瓜    Tags:Type-C   点击:(160)  评论:(0)  加入收藏
关机、睡眠、休眠,到底选哪个?
大家每天用完电脑呢,都会面临关机的选择,但是点击了“关机”图标后,会出现下图中的这么多的选项:睡眠、休眠、关机、重启,他们到底有什么差别呢?睡眠模式:将操作系统当前的操作保存...【详细内容】
2023-12-29  ASUS华硕西南    Tags:关机   点击:(89)  评论:(0)  加入收藏
站内最新
站内热门
站内头条