1、舉個打電話的例子: html
阻塞 block 是指,你撥通某人的電話,可是此人不在,因而你拿着電話等他回來,其間不能再用電話。同步大概和阻塞差很少。 異步
非阻塞 nonblock 是指,你撥通某人的電話,可是此人不在,因而你掛斷電話,待會兒再打。至於到時候他回來沒有,只有打了電話才知道。即所謂的「輪詢 / poll」。 ui
異步是指,你撥通某人的電話,可是此人不在,因而你叫接電話的人告訴那人(leave a message),回來後給你打電話(call back)。 .net
2、同步異步與阻塞和非阻塞是兩種不一樣的概念來着 htm
同步異步指的是通訊模式,而阻塞和非阻塞指的是在接收和發送時是否等待動做完成才返回 blog
首先是通訊的同步,主要是指客戶端在發送請求後,必須得在服務端有迴應後才發送下一個請求。因此這個時候的全部請求將會在服務端獲得同步 隊列
其次是通訊的異步,指客戶端在發送請求後,沒必要等待服務端的迴應就能夠發送下一個請求,這樣對於全部的請求動做來講將會在服務端獲得異步,這條請求的鏈路就象是一個請求隊列,全部的動做在這裏不會獲得同步的。 文檔
阻塞和非阻塞只是應用在請求的讀取和發送。 get
在實現過程當中,若是服務端是異步的話,客戶端也是異步的話,通訊效率會很高,但若是服務端在請求的返回時也是返回給請求的鏈路時,客戶端是能夠同步的,這種狀況下,服務端是兼容同步和異步的。相反,若是客戶端是異步而服務端是同步的也不會有問題,只是處理效率低了些。同步