重新認(rèn)識同步與異步妄荔,阻塞和非阻塞的概念

原創(chuàng)地址


前言

在實際的開發(fā)中,我們經(jīng)常會聽到同步哗伯,異步焊刹,阻塞恳蹲,非阻塞這些編程概念,每次遇到的時候都會蒙圈贺奠,然后就各種查網(wǎng)上似是而非的資料荆针,結(jié)果越查越迷糊,大部分文章都千篇一律喉悴,沒有說到本質(zhì)上的區(qū)別箕肃,所以下次再碰到這些概念今魔,印象還是比較模糊,尤其是在一些場景下同步與阻塞吟宦,異步與非阻塞感覺沒啥區(qū)別涩维,但其實這四個術(shù)語描述的事物還真不是一回事瓦阐。

下面我們來慢慢探討他們之間的區(qū)別與聯(lián)系,在這之前踏幻,我們還會經(jīng)炒辽保看到下面的組合術(shù)語:

(一)同步+阻塞

(二)同步+非阻塞

(三)異步+阻塞

(四)異步+非阻塞

在當(dāng)什么是同步和異步夭苗,阻塞與非阻塞的概念還沒弄清楚之前听诸,更別提上面這些組合術(shù)語了晌梨,只會讓你更加困惑须妻。

關(guān)于同步和異步
同步和異步其實指的是,請求發(fā)起方對消息結(jié)果的獲取是主動發(fā)起的敛惊,還是等被動通知的绰更。如果是請求方主動發(fā)起的,一直在等待應(yīng)答結(jié)果(同步阻塞)特恬,或者可以先去處理其他的事情癌刽,但要不斷輪詢查看發(fā)起的請求是否有應(yīng)答結(jié)果(同步非阻塞 )因為不管如何都要發(fā)起方主動獲取消息結(jié)果尝丐,所以形式上還是同步操作。如果是由服務(wù)方通知的远荠,也就是請求方發(fā)出請求后失息,要么在一直等待通知(異步阻塞),要么就先去干自己的事了(異步非阻塞),當(dāng)事情處理完成之后辰晕,服務(wù)方會主動通知請求方,它的請求已經(jīng)完成含友,這就是異步替裆。異步通知的方式一般是通過狀態(tài)改變,消息通知宜咒,或者回調(diào)函數(shù)來完成把鉴,大多數(shù)時候采用的都是回調(diào)函數(shù)。

關(guān)于阻塞和非阻塞
阻塞和非阻塞在計算機(jī)的世界里面场晶,通常指的是針對IO的操作怠缸,如網(wǎng)絡(luò)IO和磁盤IO等。那么什么是阻塞和非阻塞呢揭北?簡單的說就是我們調(diào)用了一個函數(shù)之后,在等待這個函數(shù)返回結(jié)果之前恨樟,當(dāng)前的線程是處于掛起狀態(tài)厌杜,還是運行狀態(tài)计螺,如果是掛起狀態(tài),就意味著當(dāng)前線程什么都不能干登馒,就等著獲取結(jié)果陈轿,這就叫同步阻塞,如果仍然是運行狀態(tài)蛾娶,就意味當(dāng)前線程是可以的繼續(xù)處理其他任務(wù)潜秋,但要時不時的去看下是否有結(jié)果了,這就是同步非阻塞罗售。

實際生活場景
同步,異步穆碎,阻塞和非阻塞职恳,會組合成上面提到過的四種結(jié)果:

(一)同步+阻塞

(二)同步+非阻塞

(三)異步+阻塞

(四)異步+非阻塞

舉個例子,比如我們?nèi)フ障囵^拍照话肖,拍完照片之后最筒,商家說需要30分鐘左右才能洗出來照片,

這個時候如果我們一直在店里面啥都不干辙培,一直等待商家面前等待它洗完照片邢锯,這個過程就叫同步阻塞。

當(dāng)然大部分人很少這么干尾抑,更多的是大家拿起手機(jī)開始看電視再愈,看一會就會問老板洗完沒护戳,老板說沒洗完媳荒, 然后我們接著看,再過一會接著問钳枕,直到照片洗完,這個過程就叫同步非阻塞疟暖。

因為店里生意太好了,越來越多的人過來拍,店里面快沒地方坐了欣舵,老板說你把你手機(jī)號留下缀磕,我一會洗好了就打電話告訴你過來取,然后你去外面找了一個長凳開始躺著睡覺等待老板打電話糟把,啥不都干,這個過程就叫異步阻塞遣疯。

當(dāng)然實際情況是缠犀,大家可能會直接先去逛街或者吃飯做其他的活動,這樣以來兩不耽誤辨液,這個過程就叫異步非阻塞滔迈。

總結(jié)

本文主要介紹了同步被辑,異步,阻塞和非阻塞的相關(guān)概念和例子间涵,從上面的描述中我們其實能夠看到阻塞和非阻塞通常是指客戶端在發(fā)出請求后勾哩,在服務(wù)端處理這個請求的過程中举哟,客戶端本身是否直接掛起等待結(jié)果,還是繼續(xù)做其他的任務(wù)潜叛。而異步和同步,則是對于請求結(jié)果的獲取是客戶端主動等待獲取销斟,還是由服務(wù)端來通知消息結(jié)果蚂踊。從這一點來看同步和阻塞其實描述的兩個不同角度的事情笔宿,阻塞和非阻塞指的一個是客戶端等待消息處理時的本身的狀態(tài)泼橘,是掛起還是繼續(xù)干別的。同步和異步指的對于消息結(jié)果的獲取是客戶端主動獲取醋粟,還是由服務(wù)端間接推送昔穴。記住這兩點關(guān)鍵的區(qū)別將有助于我們更好的區(qū)分和理解它們提前。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狈网,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子勇垛,更是在濱河造成了極大的恐慌闲孤,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脚仔,居然都是意外死亡鲤脏,警方通過查閱死者的電腦和手機(jī)吕朵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門努溃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茅坛,“玉大人则拷,你說我怎么就攤上這事煌茬√成疲” “怎么了眠屎?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵改衩,是天一觀的道長葫督。 經(jīng)常有香客問我橄镜,道長冯乘,這世上最難降的妖魔是什么裆馒? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任领追,我火速辦了婚禮绒窑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钦铺。我一直安慰自己矛洞,他們只是感情好烫映,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布沼本。 她就那樣靜靜地躺著,像睡著了一般锭沟。 火紅的嫁衣襯著肌膚如雪抽兆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天族淮,我揣著相機(jī)與錄音辫红,去河邊找鬼。 笑死祝辣,一個胖子當(dāng)著我的面吹牛贴妻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蝙斜,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼乍炉,長吁一口氣:“原來是場噩夢啊……” “哼底循!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起祠挫,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤慌植,失蹤者是張志新(化名)和其女友劉穎丈钙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體星岗,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年蠕搜,在試婚紗的時候發(fā)現(xiàn)自己被綠了妓灌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掉伏。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖箍镜,靈堂內(nèi)的尸體忽然破棺而出新博,到底是詐尸還是另有隱情,我是刑警寧澤埂淮,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布痪蝇,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蹲诀。R本人自食惡果不足惜蹋宦,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一蒿辙、第九天 我趴在偏房一處隱蔽的房頂上張望恭取。 院中可真熱鬧裕照,春花似錦惠猿、人聲如沸餐屎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至砌溺,卻和暖如春猖闪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背何址。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工颇玷, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留份招,地道東北人谐腰。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓竟闪,卻偏偏與公主長得像理朋,于是被迫代替她去往敵國和親兽愤。 傳聞我的和親對象是個殘疾皇子洼畅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容