須要先對 IO
的概念有必定的認識:php
本地文件IO
;網絡IO
;以前反正一直搞不清楚同步和阻塞, 異步和非阻塞的概念, 總感受同步就是阻塞, 異步就是非阻塞的, 老是搞得暈乎乎的, 因而就從新查了些資料進行了梳理, 若有不對歡迎你們指正;前端
同步: 同步體如今, 在等待一件事情的處理結果時, 對方是否提供通知服務, 若是對方不提供通知服務, 則爲 同步;ajax
異步: 異步體如今, 在等待一件事情的處理結果時, 對方是否提供通知服務, 若是對方提供通知服務, 則爲 異步;編程
阻塞: 阻塞體如今, 在等待一件事情的處理結果時, 你是否還去幹點其餘的事情, 若是不去, 則爲 阻塞;微信
非阻塞: 非阻塞體如今, 在等待一件事情的處理結果時, 你是否還去幹點其餘的事情, 若是去了, 則爲 非阻塞;網絡
此處找了一位朋友寫的例子, 感受很不錯
同步阻塞: 你去 甜在心饅頭 店買太極饅頭, 阿梅說:"暫時沒, 正在蒸呢, 你本身看着點兒!", 因而你就站在旁邊只等饅頭, 此時的你, 是阻塞的, 也是同步的;異步
同步非阻塞: 你去甜在心饅頭店買太極饅頭, 阿梅說:"暫時沒, 正在蒸呢, 你本身看着點兒!", 因而你就站在旁邊發發微信, 而後問一句:"好了沒?", 而後玩玩QQ遊戲, 而後再問一句:"好了沒?", 此時的你, 是非阻塞的, 不過卻仍是同步的;socket
異步阻塞: 你去甜在心饅頭店買太極饅頭, 阿梅說:"暫時沒, 正在蒸呢, 蒸好了我打電話告訴你!", 但你依然站在旁邊只等饅頭, 此時的你, 是阻塞的, 是異步的;code
異步非阻塞: 你去甜在心饅頭店買太極饅頭, 阿梅說:"暫時沒, 正在蒸呢, 蒸好了我打電話告訴你!", 因而你就走了, 去買了雙新球鞋, 看了看武館, 總之, 今後再也不過問饅頭的事情, 一心只等阿梅電話, 此時的你, 是非阻塞的, 是異步的server