同步IO和异步IO的区别?
1.同步IO和異步IO的區(qū)別?
????????同步就是在發(fā)出一個(gè)功能調(diào)用時(shí),在沒有得到結(jié)果之前,該調(diào)用就不返回。也就是必須一件一件事做,等前一件事做完了才能做下一件事。
????????異步的概念和同步相對(duì)。當(dāng)一個(gè)異步過程調(diào)用發(fā)出后,調(diào)用者不能立刻得到結(jié)果(在此期間,調(diào)用者可以去干一些別的事情)。實(shí)際處理這個(gè)調(diào)用的部件在完成后,通過狀態(tài)、通知和回調(diào)來通知調(diào)用者。
舉個(gè)例子:
阻塞IO:給女神發(fā)一條短信, 說我來找你了, 然后就默默的一直等著女神下樓, 這個(gè)期間除了等待你不會(huì)做其他事情。
非阻塞IO:給女神發(fā)短信, 如果不回, 接著再發(fā), 一直發(fā)到女神下樓, 這個(gè)期間你除了發(fā)短信等待不會(huì)做其他事情。
IO多路復(fù)用:是找一個(gè)宿管大媽來幫你監(jiān)視下樓的女生, 這個(gè)期間你可以些其他的事情. 例如可以順便看看其他妹子,玩玩王者榮耀, 上個(gè)廁所等等. IO復(fù)用又包括 select, poll, epoll 模式. 那么它們的區(qū)別是什么?
1)?select大媽?每一個(gè)女生下樓, select大媽都不知道這個(gè)是不是你的女神, 她需要一個(gè)一個(gè)詢問, 并且select大媽能力還有限, 最多一次幫你監(jiān)視1024個(gè)妹子。
2)?poll大媽不限制盯著女生的數(shù)量, 只要是經(jīng)過宿舍樓門口的女生, 都會(huì)幫你去問是不是你女神。
3)?epoll大媽不限制盯著女生的數(shù)量, 并且也不需要一個(gè)一個(gè)去問. 那么如何做呢? epoll大媽會(huì)為每個(gè)進(jìn)宿舍樓的女生臉上貼上一個(gè)大字條,上面寫上女生自己的名字, 只要女生下樓了, epoll大媽就知道這個(gè)是不是你女神了, 然后大媽再通知你。
????????上面這四種情況都是同步IO,它們有一個(gè)共同點(diǎn)就是, 當(dāng)女神走出宿舍門口的時(shí)候, 你已經(jīng)站在宿舍門口等著女神了。
異步IO的情況:
????????你告訴女神我來了, 然后你就去打游戲了, 一直到女神下樓了, 發(fā)現(xiàn)找不見你了, 女神再給你打電話通知你, 說我下樓了, 你在哪呢? 這時(shí)候你才來到宿舍門口。
參考:同步和異步的區(qū)別_HarkerYX的博客-CSDN博客_異步和同步
????????同步,可以理解為在執(zhí)行完一個(gè)函數(shù)或方法之后,一直等待系統(tǒng)返回值或消息,這時(shí)程序是出于阻塞的,只有接收到返回的值或消息后才往下執(zhí)行其他的命令。(同步如打電話,通信雙方不能斷(我們是同時(shí)進(jìn)行,同步),你一句我一句,這樣的好處是,對(duì)方想表達(dá)的信息我馬上能收到,但是,我在打著電話,我無法做別的事情。)
????????異步,執(zhí)行完函數(shù)或方法后,不必阻塞性地等待返回值或消息,只需要向系統(tǒng)委托一個(gè)異步過程,那么當(dāng)系統(tǒng)接收到返回值或消息時(shí),系統(tǒng)會(huì)自動(dòng)觸發(fā)委托的異步過程,從而完成一個(gè)完整的流程。(異步如收發(fā)收短信,對(duì)比打電話,打電話我一定要在電話的旁邊聽著,保證雙方都在線,而收發(fā)短信,對(duì)方不用保證此刻我一定在手機(jī)旁,同時(shí),我也不用時(shí)刻留意手機(jī)有沒有來短信。這樣的話,我看著視頻,然后來了短信,我就處理短信(也可以不處理),接著再看視頻)
總結(jié)
以上是生活随笔為你收集整理的同步IO和异步IO的区别?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTTP标准相关的基础概念
- 下一篇: Windows下有关信息收集的命令