同步異步與阻塞非阻塞的區別

之前沒有仔細體會同步異步與阻塞非阻塞的區別,有時總將他們混淆,這次做下深入的理解。

同步異步通常是指通知的機制,與CPU的查詢和中斷機制有些類似。 同步方式, 需要自己不斷輪詢狀態且不能執行其他操作, 這時會佔用CPU時間做無用功。 而異步方式則是自己提前註冊回調函數,可以執行自己的操作,當條件滿足時,自動調用回調函數。一般情況異步方式工作效率更高。

阻塞與非阻塞通常是指調用一個函數後,如果不滿足要求,當前線程是否會休眠。例如在socket編程中,調用阻塞模式的recv後, 如果協議棧中讀緩衝區沒有數據,調用線程就會休眠,recv函數不會返回, 直到協議棧中讀緩衝區有數據到來。調用非阻塞的recv函數,無論協議棧有沒有數據都會立即範圍,如果有數據,則返回讀到的字節數, 沒有數據則返回一個錯誤號告訴調用者。

同步異步與阻塞非阻塞是兩種不同的機制, 他們可以組合使用,使用異步非阻塞效率最高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章