如何理解非阻塞I/O(詳解)

node有三大特征:單線程衍慎、非阻塞I/O,事件驅動

非阻塞I/O

非阻塞 I/O皮钠,也叫異步 I/O稳捆,顯然對應的就是阻塞式 I/O

傳統(tǒng)的服務器語言大多是多線程、阻塞式 I/O麦轰。這也是 Node 與眾不同的地方乔夯,對于傳統(tǒng)的服務器語言砖织,在與用戶建立連接時,每一個連接都是一個線程末荐。 當有十萬個用戶連接時侧纯,服務器上就會有十萬個線程。而阻塞式 I/O 是指甲脏,當一個線程在執(zhí)行 I/O 操作時眶熬,這個線程會阻塞,等待 I/O 操作完成后繼續(xù)執(zhí)行块请。

舉個例子可以更好理解娜氏,比如我們到一個餐館吃飯,這個餐館比較高級墩新,服務員是一對一服務(每個用戶都是一個線程)贸弥,從我們坐下開始,服務員就把菜單給你海渊,然后在旁邊等你點菜(等待 I/O 操作)茂腥,當你看完菜單,把要點的菜告訴服務員( I/O 操作結束后線程繼續(xù)執(zhí)行)切省。在你看菜單的過程中最岗,服務員其實是被閑置的,如果你一直看朝捆,他就會一直等般渡,直到你點完( I/O 操作結束)。這就是阻塞式 I/O芙盘。

上面的例子應該可以很好地理解多線程驯用、阻塞式 I/O 。而 node 的特性是單線程儒老、非阻塞時 I/O 蝴乔。node 最大的優(yōu)勢就是性能強,同樣的服務器性能使用 node 可以比傳統(tǒng)的服務器語言多容納一百倍的用戶(對于不同的任務有不同的差別驮樊, I/O 操作越多薇正,node優(yōu)勢越明顯,如果都是 CPU 計算任務囚衔,那他倆幾乎沒有區(qū)別(上面的例子中挖腰,忽略顧客的看菜單時間)。

還是用上面的例子再比喻一下單線程练湿、非阻塞式 I/O 猴仑。這應該是個規(guī)模比較小的餐館,或者說老板比較窮肥哎,雇不起大量的服務員辽俗,因此只能雇傭一個服務員疾渣。當有顧客來時,服務員把菜單送過去崖飘,顧客開始看菜單( I/O 操作)稳衬,這個時候,服務員是被釋放了的坐漏,他不用等待顧客看菜單薄疚,服務員說:“您先看著菜單,點好了叫我”(回調函數(shù))赊琳。這個時候這個服務員就可以抽身去服務其他的顧客街夭。用這種模式的話,一個服務員就可以服務多位顧客躏筏,而且不需要等待 I/O 板丽,只需要隨時監(jiān)聽就行了,顧客點完后會主動叫服務員(執(zhí)行回調函數(shù))趁尼。

單線程埃碱、非阻塞式 I/O 的優(yōu)勢就是性能強,一個人服務員就可以解決大量顧客酥泞。但是他的缺點也很明顯砚殿,比如有一桌顧客和服務員又吵架了(線程崩了!)芝囤,那這些顧客就都完了似炎,因為所有人都在等這一個服務員。也就是說悯姊,如果線程崩掉了羡藐,那與這個服務器連接的所有用戶都會崩潰。

但是悯许,還有一個問題就是仆嗦,如果有多個顧客都在叫你,該如何響應先壕?肯定要有一定的規(guī)則瘩扼,這就涉及到了 node 的事件驅動。所以說启上,這三大特點邢隧,其實也是一個事,缺任何一個都不行冈在。

參考文檔:https://blog.csdn.net/TalonZhang/article/details/88414752

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市按摘,隨后出現(xiàn)的幾起案子包券,更是在濱河造成了極大的恐慌纫谅,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溅固,死亡現(xiàn)場離奇詭異付秕,居然都是意外死亡,警方通過查閱死者的電腦和手機侍郭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門询吴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人亮元,你說我怎么就攤上這事猛计。” “怎么了爆捞?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵奉瘤,是天一觀的道長。 經常有香客問我煮甥,道長盗温,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任成肘,我火速辦了婚禮卖局,結果婚禮上,老公的妹妹穿的比我還像新娘双霍。我一直安慰自己吼驶,他們只是感情好,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布店煞。 她就那樣靜靜地躺著蟹演,像睡著了一般。 火紅的嫁衣襯著肌膚如雪顷蟀。 梳的紋絲不亂的頭發(fā)上酒请,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音鸣个,去河邊找鬼羞反。 笑死,一個胖子當著我的面吹牛囤萤,可吹牛的內容都是我干的昼窗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涛舍,長吁一口氣:“原來是場噩夢啊……” “哼澄惊!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤掸驱,失蹤者是張志新(化名)和其女友劉穎肛搬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體毕贼,經...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡温赔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鬼癣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陶贼。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖待秃,靈堂內的尸體忽然破棺而出拜秧,到底是詐尸還是另有隱情,我是刑警寧澤锥余,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布腹纳,位于F島的核電站,受9級特大地震影響驱犹,放射性物質發(fā)生泄漏嘲恍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一雄驹、第九天 我趴在偏房一處隱蔽的房頂上張望佃牛。 院中可真熱鬧,春花似錦医舆、人聲如沸俘侠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爷速。三九已至,卻和暖如春霞怀,著一層夾襖步出監(jiān)牢的瞬間惫东,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工毙石, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留廉沮,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓徐矩,卻偏偏與公主長得像滞时,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子滤灯,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內容