若是第二次看到個人文章,歡迎關注個人我的原創公衆號「跨界架構師」哦~每週五11:45 按時送達。 固然了,也會時不時加個餐~
其實並非如此,Z哥我此次就想來幫你搞清楚這個問題。linux
仍是拿咱們上一篇中提到的排隊買奶茶這個例子,看看爲何說是「同步」+「阻塞」。程序員
怎麼讓「同步」也能不阻塞呢?api
奶茶店分了點單區和取餐區以後,作好的飲料就只能從取餐區拿,也意味着接待你進行點單的人並非實際作奶茶的人。這個時候你會拿到一張取餐號,而後老老實實的去取餐區等着,而不是「佔着xx不xx」。緩存
但若是你不着急,就在邊上開一局吃雞,等着裏面作好了叫號,到你號碼了再去拿。這就是「異步」+「非阻塞」。由於這個事情是對方(裏面的店員)觸發完成的,這就是「回調」,是對你以前的「點單」請求進行的響應。一來一回完成一個完整的交互。微信
阻塞不阻塞是你本身決定的,你能夠阻塞啊。好比,你等的「回調」時候發現沒帶手機,玩不了吃雞,那隻能傻傻的在那等着,啥也幹不了。如此,這個過程雖然仍是「異步」的,但對你來講就是「阻塞」的。網絡
其實你仔細想一下就會發現,不少知名的框架,都是「同步」+「非阻塞」的,爲何呢?由於你能夠繼續像「同步」同樣編寫代碼,可是能夠享受到相似「異步」所能帶來的更好的性能,何樂而不爲?架構
咱們在設計對外的api的時候也可使用這種模式,下降一些耗時接口調用所產生的影響。這個阮一峯老師已經寫的很是清楚了,我就直接貼個連接:http://www.ruanyifeng.com/blog/2018/12/async-api-design.html。框架
「異步」+「非阻塞」就多了。任何你看到callback關鍵字的框架都是。異步
此次呢,Z哥先經過同步/異步、阻塞/非阻塞之間造成的4種組合形式,聊了下它們究竟是怎麼回事。
最後送你一個記住這4個概念的最好辦法。
做者:Zachary
出處:www.cnblogs.com/Zachary-Fan…
若是你喜歡這篇文章,能夠點一下左側的「大拇指」哦~。
這樣能夠給我一點反饋。: )
謝謝你的舉手之勞。
▶關於做者:張帆(Zachary,我的微信號:Zachary-ZF)。堅持用心打磨每一篇高質量原創。本文首發於公衆號:「跨界架構師」(ID:Zachary_ZF)。<-- 點擊後閱讀熱門文章
按期發表原創內容:架構設計丨分佈式系統丨產品丨運營丨一些思考。
若是你是初級程序員,想提高但不知道如何下手。又或者作程序員多年,陷入了一些瓶頸想拓寬一下視野。歡迎關注個人公衆號「跨界架構師」,回覆「技術」,送你一份我長期收集和整理的思惟導圖。
若是你是運營,面對不斷變化的市場一籌莫展。又或者想了解主流的運營策略,以豐富本身的「倉庫」。歡迎關注個人公衆號「跨界架構師」,回覆「運營」,送你一份我長期收集和整理的思惟導圖。