天天看點

同步、異步,阻塞、非阻塞

        經常遇到這幾個詞,對它們的概念以及互相之間的關系總是模糊,今天在網上找到一篇介紹得非常清楚的博文,記錄一下,希望下回不要再弄混淆。

原文:http://blog.csdn.net/historyasamirror/archive/2009/06/15/4270633.aspx

         http://blog.csdn.net/historyasamirror/archive/2010/07/31/5778378.aspx

        所謂的同步和異步,在這裡指的是application和kernel之間的互動方式。如果application不需要等待 kernel的回應,那麼它就是異步的。如果application送出完IO請求後,需要等待“回執”,那麼它就是同步的。

        而阻塞和非阻塞,指的是application是否等待IO操作的完成。如果application必須等到IO操作實際完成以後再執行下面的操作,那麼它是阻塞的。反之,如果不等待IO操作的完成就開始執行其它操作,那麼它是非阻塞的。

        異步阻塞IO和同步阻塞IO是一樣的,應用程式都是一直等到IO操作成功之後(資料已經被寫入或者讀取),才開始進行下面的工作。異步阻塞IO的好處在于一個select函數可以為多個描述符提供通知,提高了并發性。

繼續閱讀