1. 程式人生 > >同步非同步,阻塞非阻塞概念

同步非同步,阻塞非阻塞概念

對於網路程式設計,經常會遇到同步阻塞同步非阻塞非同步阻塞非同步非阻塞這樣的字眼,對於阻塞這個詞,很好理解,從字面的意思上就可以看出阻塞的含義,但是,對於同步,非同步,如果單獨理解,也很好理解,就是時間上的關係。
舉個例子就是,我去燉了一壺水,我在旁邊等著,水一開,我立馬就聽到了水開了的聲音了,這就是同步的含義,就是說一個事件完成的時候,與之伴隨的另一個事件會立馬收到這個事件完成的訊息,並執行相關的一些操作,比如就是我把水灌進暖水壺裡。對於不同步而言,就是我沒在水壺旁邊,水開了,但是我沒有立馬聽到,後面突然有人過來告訴我水開了,然後我才知道水開了,這個就是不同步。對於不同步而言,當一個事件完成的時候,與之伴隨的另一個事件並不會第一時間就收到這個事件完成的訊息,而是會有相關的訊息機制去通知它,然後才會去執行與之相關的一些操作。
網上還有些部落格說的也很好,就是說,對於同步而言,就是呼叫者會主動不斷的迴圈檢測被呼叫者是否完成了某一個事情,比如說我會不斷地看水壺中的水是否開了,這裡我是呼叫者,水壺是被呼叫者,燉水是水壺執行的動作,而對於非同步來說呢,呼叫者並不主動關心被呼叫者是否完成某一個事情,而是在等待著相關的通知來告訴它,就是水壺開始燉水的時候,我去看電影了,我不去主動看水壺的水有沒有開,而是等有人告訴我。有專門的系統機制去監聽這個事件的完成情況。
說白了,同步非同步就是指的是對於被呼叫者事件完成情況這個訊息的監聽機制的不同。一個是主動監聽,一個是被動監聽。
如有錯誤,請多擔待,後面還會修改補充。