同步異步,阻塞,非阻塞

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

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

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

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

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

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

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

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

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

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