同步和異步區(qū)別,阻塞和非阻塞區(qū)別

工作了有一段時(shí)間了麻车,但是今天看到這個(gè)問(wèn)題時(shí)自己先想了想缀皱,大概能明白同步和異步的區(qū)別,但是阻塞和非阻塞就想不清楚了绪氛,后來(lái)網(wǎng)上查閱了好多資料唆鸡,甚至好多資料里邊的解釋都是不一樣的涝影,下面我用用我能理解的最簡(jiǎn)單的語(yǔ)言給大家解釋一下這些區(qū)別枣察,僅供參考,如有不同意見(jiàn)燃逻,歡迎砸磚序目。

同步和異步:

同步和異步是在線程層次來(lái)說(shuō)的,同步的情況下,是由處理消息者自己去等待消息是否被觸發(fā),而異步的情況下是由觸發(fā)機(jī)制來(lái)通知處理消息者,同步和異步最大的區(qū)別就在于伯襟。一個(gè)需要等待猿涨,一個(gè)不需要等待。

比如廣播姆怪,就是一個(gè)異步例子叛赚。發(fā)起者不關(guān)心接收者的狀態(tài)澡绩。不需要等待接收者的返回信息

電話,就是一個(gè)同步例子俺附。發(fā)起者需要等待接收者肥卡,接通電話后,通信才開始事镣。需要等待接收者的返回信息

同步:發(fā)送一個(gè)請(qǐng)求,等待返回,然后再發(fā)送下一個(gè)請(qǐng)求

異步:發(fā)送一個(gè)請(qǐng)求,不等待返回,隨時(shí)可以再發(fā)送下一個(gè)請(qǐng)求

從圖中可以看出同步是發(fā)送一個(gè)消息步鉴,返回一個(gè)消息,在這之間不會(huì)做別的事璃哟,需要等待只是在等待消息返回氛琢,幾次發(fā)送消息是有順序的,這是一種可靠的任務(wù)序列随闪。要么成功都成功阳似,失敗都失敗。而異步是不需要等待被依賴的任務(wù)完成铐伴,只是通知被依賴的任務(wù)要完成什么工作障般,依賴的任務(wù)也立即執(zhí)行,只要自己完成了整個(gè)任務(wù)就算完成了盛杰。至于被依賴的任務(wù)最終是否真正完成挽荡,依賴它的任務(wù)無(wú)法確定,所以它是不可靠的任務(wù)序列即供。

同步可以避免出現(xiàn)死鎖定拟,讀臟數(shù)據(jù)的發(fā)生,一般共享某一資源的時(shí)候用逗嫡,如果每個(gè)人都有修改權(quán)限青自,同時(shí)修改一個(gè)文件,有可能使一個(gè)人讀取另一個(gè)人已經(jīng)刪除的內(nèi)容驱证,就會(huì)出錯(cuò)延窜,同步就會(huì)按順序來(lái)修改。

異步則是可以提高效率了抹锄,現(xiàn)在cpu都是雙核逆瑞,四核,異步處理的話可以同時(shí)做多項(xiàng)工作伙单,當(dāng)然必須保證是可以并發(fā)處理的获高。

這些都是對(duì)的。

下面來(lái)看網(wǎng)上的一個(gè)解釋:

同步和異步關(guān)注的是消息通信機(jī)制(synchronous communication/ asynchronous communication)

所謂同步吻育,就是在發(fā)出一個(gè)*調(diào)用*時(shí)念秧,在沒(méi)有得到結(jié)果之前,該*調(diào)用*就不返回布疼。但是一旦調(diào)用返回摊趾,就得到返回值了币狠。

換句話說(shuō),就是由*調(diào)用者*主動(dòng)等待這個(gè)*調(diào)用*的結(jié)果砾层。

而異步則是相反总寻,*調(diào)用*在發(fā)出之后,這個(gè)調(diào)用就直接返回了梢为,所以沒(méi)有返回結(jié)果渐行。換句話說(shuō),當(dāng)一個(gè)異步過(guò)程調(diào)用發(fā)出后铸董,調(diào)用者不會(huì)立刻得到結(jié)果祟印。而是在*調(diào)用*發(fā)出后,*被調(diào)用者*通過(guò)狀態(tài)粟害、通知來(lái)通知調(diào)用者蕴忆,或通過(guò)回調(diào)函數(shù)處理這個(gè)調(diào)用。

典型的異步編程模型比如Node.js

舉個(gè)通俗的例子:

你打電話問(wèn)書店老板有沒(méi)有《分布式系統(tǒng)》這本書悲幅,如果是同步通信機(jī)制套鹅,書店老板會(huì)說(shuō),你稍等汰具,”我查一下"卓鹿,然后開始查啊查,等查好了(可能是5秒留荔,也可能是一天)告訴你結(jié)果(返回結(jié)果)吟孙。

而異步通信機(jī)制,書店老板直接告訴你我查一下啊聚蝶,查好了打電話給你杰妓,然后直接掛電話了(不返回結(jié)果)。然后查好了碘勉,他會(huì)主動(dòng)打電話給你巷挥。在這里老板通過(guò)“回電”這種方式來(lái)回調(diào)。

阻塞和非阻塞

阻塞與非阻塞主要是從 CPU 的消耗上來(lái)說(shuō)的验靡,阻塞和非阻塞應(yīng)該是發(fā)生在消息的處理的時(shí)刻倍宾。阻塞其實(shí)就是等待,發(fā)出通知晴叨,等待結(jié)果完成凿宾。非阻塞屬于發(fā)出通知,立即返回結(jié)果兼蕊,沒(méi)有等待過(guò)程。

阻塞就是 CPU 停下來(lái)等待一個(gè)慢的操作完成 CPU 才接著完成其它的事件蚕。非阻塞就是在這個(gè)慢的操作在執(zhí)行時(shí) CPU 去干其它別的事孙技,等這個(gè)慢的操作完成時(shí)产禾,CPU 再接著完成后續(xù)的操作。雖然表面上看非阻塞的方式可以明顯的提高 CPU 的利用率牵啦,但是也帶了另外一種后果就是系統(tǒng)的線程切換增加亚情。增加的 CPU 使用時(shí)間能不能補(bǔ)償系統(tǒng)的切換成本需要好好評(píng)估。

打個(gè)比喻吧:司機(jī)開車在路上阻車了哈雏,如果采用阻塞模式楞件,則司機(jī)停下來(lái)什么事也不干,就眼巴巴地直等前面的車啟動(dòng)裳瘪,他繼續(xù)跟車土浸。如果采用非阻塞模式,則前面阻車后彭羹,司機(jī)停下來(lái)看報(bào)紙黄伊,聽音樂(lè),等前面車走動(dòng)后派殷,他再放下報(bào)紙还最,繼續(xù)跟車。

總結(jié):

同步異步是在線程層次來(lái)說(shuō)的毡惜,阻塞非阻塞是在cpu層次來(lái)說(shuō)的拓轻,層次不同

同步與異步:是自己去做這件事情,自己拿結(jié)果(同步)经伙,還是等別人做好了來(lái)通知有結(jié)果(異步)悦即,注意這里說(shuō)的是拿結(jié)果。通常異步效率比較高橱乱,因?yàn)椴挥玫却际幔叫时容^低,要等待泳叠。同步:發(fā)送一個(gè)請(qǐng)求,等待返回,然后再發(fā)送下一個(gè)請(qǐng)求作瞄,異步:發(fā)送一個(gè)請(qǐng)求,不等待返回,隨時(shí)可以再發(fā)送下一個(gè)請(qǐng)求

阻塞非阻塞區(qū)別在于完成一件事情時(shí),當(dāng)事情還沒(méi)有完成時(shí)危纫,處理這件事情的人除此之外還能不能再做別的事情宗挥;能的話就是非阻塞,不能就是阻塞种蝶。

轉(zhuǎn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末契耿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子螃征,更是在濱河造成了極大的恐慌搪桂,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異踢械,居然都是意外死亡酗电,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門内列,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)撵术,“玉大人,你說(shuō)我怎么就攤上這事话瞧∧塾耄” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵交排,是天一觀的道長(zhǎng)划滋。 經(jīng)常有香客問(wèn)我,道長(zhǎng)个粱,這世上最難降的妖魔是什么古毛? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮都许,結(jié)果婚禮上稻薇,老公的妹妹穿的比我還像新娘。我一直安慰自己胶征,他們只是感情好塞椎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著睛低,像睡著了一般案狠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钱雷,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天骂铁,我揣著相機(jī)與錄音,去河邊找鬼罩抗。 笑死拉庵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的套蒂。 我是一名探鬼主播钞支,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼操刀!你這毒婦竟也來(lái)了烁挟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤骨坑,失蹤者是張志新(化名)和其女友劉穎撼嗓,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡静稻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年警没,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匈辱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片振湾。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖亡脸,靈堂內(nèi)的尸體忽然破棺而出押搪,到底是詐尸還是另有隱情,我是刑警寧澤浅碾,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布大州,位于F島的核電站,受9級(jí)特大地震影響垂谢,放射性物質(zhì)發(fā)生泄漏厦画。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一滥朱、第九天 我趴在偏房一處隱蔽的房頂上張望根暑。 院中可真熱鬧,春花似錦徙邻、人聲如沸排嫌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)淳地。三九已至,卻和暖如春帅容,著一層夾襖步出監(jiān)牢的瞬間颇象,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工并徘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遣钳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓饮亏,卻偏偏與公主長(zhǎng)得像耍贾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子路幸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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