IO的同步/異步

由于CPU和內(nèi)存的速度遠(yuǎn)遠(yuǎn)高于外設(shè)的速度,所以,在IO編程中,就存在速度嚴(yán)重不匹配的問題。舉個(gè)例子來說,比如要把100M的數(shù)據(jù)寫入磁盤,CPU輸出100M的數(shù)據(jù)只需要0.01秒,可是磁盤要接收這100M數(shù)據(jù)可能需要10秒,怎么辦呢?有兩種辦法:

  1. 第一種是CPU等著,也就是程序暫停執(zhí)行后續(xù)代碼,等100M的數(shù)據(jù)在10秒后寫入磁盤,再接著往下執(zhí)行,這種模式稱為同步IO;
  2. 另一種方法是CPU不等待,只是告訴磁盤,“您老慢慢寫,不著急,我接著干別的事去了”,于是,后續(xù)代碼可以立刻接著執(zhí)行,這種模式稱為異步IO。

一、同步和異步的區(qū)別

區(qū)別在于是否等待IO執(zhí)行的結(jié)果。
好比你去麥當(dāng)勞點(diǎn)餐,你說“來個(gè)漢堡”,服務(wù)員告訴你,對(duì)不起,漢堡要現(xiàn)做,需要等5分鐘,于是你站在收銀臺(tái)前面等了5分鐘,拿到漢堡再去逛商場(chǎng),這是同步IO。
你說“來個(gè)漢堡”,服務(wù)員告訴你,漢堡需要等5分鐘,你可以先去逛商場(chǎng),等做好了,我們?cè)偻ㄖ?,這樣你可以立刻去干別的事情(逛商場(chǎng)),這是異步IO。

二、優(yōu)缺點(diǎn)

很明顯,使用異步IO來編寫程序性能會(huì)遠(yuǎn)遠(yuǎn)高于同步IO,但是異步IO的缺點(diǎn)是編程模型復(fù)雜。想想看,你得知道什么時(shí)候通知你“漢堡做好了”,而通知你的方法也各不相同。如果是服務(wù)員跑過來找到你,這是回調(diào)模式,如果服務(wù)員發(fā)短信通知你,你就得不停地檢查手機(jī),這是輪詢模式??傊?,異步IO的復(fù)雜度遠(yuǎn)遠(yuǎn)高于同步IO。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容