同步異步,阻塞,非阻塞

IO操作其實(shí)可以分成兩個(gè)步驟,請(qǐng)求IO操作和執(zhí)行IO操作。一般的IO調(diào)用過(guò)程是這樣的:發(fā)起IO操作的請(qǐng)求,執(zhí)行IO操作,得到IO操作的結(jié)果,將結(jié)果返回給IO操作請(qǐng)求。

同步和異步同步和異步是一種通信機(jī)制,涉及到調(diào)用方和被調(diào)用方,關(guān)注的是IO操作的執(zhí)行過(guò)程及結(jié)果的返回方式,不同點(diǎn)在于雙方在這兩個(gè)方面的行為方式。如果調(diào)用方需要保持等待直到IO操作完成進(jìn)而通過(guò)返回獲得結(jié)果,則是同步的;如果調(diào)用方在IO操作的執(zhí)行過(guò)程中不需要保持等待,而是在操作完成后被動(dòng)的接受(通過(guò)消息或回調(diào))被調(diào)用方推送的結(jié)果,則是異步的。同步和異步,適合描述執(zhí)行IO操作的情境。

阻塞和非阻塞阻塞和非阻塞是一種調(diào)用機(jī)制,只涉及到調(diào)用方,關(guān)注的是IO操作的執(zhí)行狀態(tài),不同點(diǎn)在于請(qǐng)求IO操作后,針對(duì)IO操作的狀態(tài),調(diào)用方的行為方式。如果調(diào)用方等待IO操作完成后返回,則是阻塞的;如果調(diào)用方不需要等待IO操作完成就立即返回,則是非阻塞的,非阻塞的情況下,常常需要多次調(diào)用去check,才能獲得IO操作的結(jié)果。阻塞和非阻塞,適合描述發(fā)起IO操作請(qǐng)求的情境。
阻塞與非阻塞,和同步異步無(wú)關(guān),可以阻塞等待同步執(zhí)行過(guò)程完成,也可以阻塞等待異步執(zhí)行過(guò)程完成。根據(jù)以上理解,同步和異步,阻塞和非阻塞,是可以互相組合的。

同步阻塞調(diào)用者發(fā)起IO操作請(qǐng)求,等待IO操作完成再返回。IO操作的過(guò)程需要等待,操作執(zhí)行完成后返回結(jié)果。

同步非阻塞調(diào)用者發(fā)起IO操作請(qǐng)求,詢(xún)問(wèn)IO操作的狀態(tài),如果未完成,則立即返回;如果完成,則返回結(jié)果。IO操作的過(guò)程需要等待執(zhí)行完成才返回結(jié)果。

異步阻塞調(diào)用者發(fā)起IO操作請(qǐng)求,等待IO操作完成再返回。IO操作的過(guò)程不需要等待,操作完成后通過(guò)通知或回調(diào)獲得結(jié)果。

異步非阻塞調(diào)用者發(fā)起IO操作請(qǐng)求,詢(xún)問(wèn)IO操作的狀態(tài),如果未完成,則立即返回;如果完成,則返回結(jié)果。IO操作的過(guò)程不需要等待,操作完成后通過(guò)通知或回調(diào)獲得結(jié)果。

最后編輯于
?著作權(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)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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