最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node中對(duì)非阻塞I/O、事件循環(huán)的知識(shí)點(diǎn)總結(jié)

 更新時(shí)間:2020年01月05日 14:38:20   作者:WahFung  
在本篇文章里小編給大家整理的是一篇關(guān)于Node中對(duì)非阻塞I/O、事件循環(huán)的知識(shí)點(diǎn)分享內(nèi)容,需要的朋友們可以參考下。

Node.js的主要特點(diǎn)

單線程、非阻塞I/O、事件驅(qū)動(dòng),這三個(gè)特點(diǎn)是相輔相成的。

Node為了在低硬件服務(wù)器條件下高并發(fā),所以減少了內(nèi)存消耗,選擇單線程;

因?yàn)橹挥幸粋€(gè)線程,所以必須非阻塞I/O,每件事情都有回調(diào)函數(shù);

為了合理調(diào)度,Node使用了事件環(huán)的機(jī)制,采用事件驅(qū)動(dòng)來(lái)調(diào)度事件。

非阻塞I/O

I/O是輸入(input)、輸出(output)的簡(jiǎn)稱。

阻塞I/O和非阻塞I/O的區(qū)別在于系統(tǒng)在輸入與輸出的期間,能不能接收輸入。

舉個(gè)例子:餐廳服務(wù)員招待客人

阻塞I/O:餐廳有多個(gè)服務(wù)員(多線程),一個(gè)服務(wù)員對(duì)應(yīng)一個(gè)客人,客人從點(diǎn)菜到點(diǎn)菜結(jié)束的期間,服務(wù)員都會(huì)被閑置不做任何事情,直到這桌客人點(diǎn)完菜,服務(wù)員才能招待下一桌客人。

非阻塞I/O:餐廳有一個(gè)服務(wù)員(單線程),服務(wù)員招待一桌客人時(shí),對(duì)客人說(shuō):“你先看下菜單,好了就叫我”。然后前往下一桌繼續(xù)招待,等到一桌客人點(diǎn)完菜后,服務(wù)員再過(guò)去處理,如此反復(fù),效率大大提高。

但也不能證明非阻塞I/O是一定好的,比如服務(wù)員中間發(fā)生意外,所有的客人都要等這一個(gè)服務(wù)員,這樣就會(huì)影響餐廳整體質(zhì)量(可以理解為服務(wù)器奔潰);
阻塞I/O由于有多個(gè)服務(wù)員,一對(duì)一的服務(wù),即使有一個(gè)發(fā)生意外,也不會(huì)影響整體質(zhì)量,而雇多個(gè)服務(wù)員也要相應(yīng)的付出成本。

所以沒(méi)有最好的選擇,只有適合的選擇,Node.js本身的應(yīng)用場(chǎng)景就是I/O操作越多優(yōu)勢(shì)越明顯,但安全性也會(huì)下降。

事件循環(huán)

事件循環(huán)是 Node.js 處理非阻塞 I/O 操作的機(jī)制,也是實(shí)現(xiàn)非阻塞I/O的前提基礎(chǔ)。

非阻塞I/O在每個(gè)事情上都注冊(cè)有回調(diào)函數(shù),當(dāng)其中的一個(gè)事情完成的時(shí)候,通知 Node.js 將適合的回調(diào)函數(shù)添加到輪詢隊(duì)列中等待時(shí)機(jī)執(zhí)行。

簡(jiǎn)單來(lái)說(shuō)就是Node.js會(huì)每隔一段時(shí)間檢查一下隊(duì)列中的回調(diào)函數(shù),看看有沒(méi)有完成的回調(diào)函數(shù),如果有就輸出結(jié)果。

就像上面非阻塞I/O的例子一樣,服務(wù)員在服務(wù)下一桌客人時(shí),會(huì)時(shí)刻留意上一桌客人的情況。當(dāng)客人點(diǎn)完菜會(huì)通知服務(wù)員說(shuō):“我點(diǎn)完菜了”,服務(wù)員收到后說(shuō):“好的,我知道了”,然后將這桌的號(hào)碼記到本子上(回調(diào)函數(shù)添加到輪詢隊(duì)列)。等到上菜時(shí),也會(huì)按照本子上記錄的順序?yàn)榭腿松喜?/p>

以上知識(shí)點(diǎn)比較直白一些,大家如果有任何補(bǔ)充和意見可以聯(lián)系腳本之家的小編。

相關(guān)文章

  • 淺談Node.js ORM框架Sequlize之表間關(guān)系

    淺談Node.js ORM框架Sequlize之表間關(guān)系

    下面小編就為大家?guī)?lái)一篇淺談Node.js ORM框架Sequlize之表間關(guān)系。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • 詳解Node.js服務(wù)器靜態(tài)資源處理

    詳解Node.js服務(wù)器靜態(tài)資源處理

    靜態(tài)資源服務(wù)器指的是不會(huì)被服務(wù)器的動(dòng)態(tài)運(yùn)行所改變或者生成的文件,本文主要為大家詳細(xì)介紹了Node.js服務(wù)器靜態(tài)資源處理的相關(guān)知識(shí),需要的可以了解下
    2024-04-04
  • Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實(shí)例

    Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實(shí)例

    這篇文章主要介紹了Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實(shí)例,本文給出了利用子進(jìn)程調(diào)用系統(tǒng)命令、執(zhí)行系統(tǒng)命令、調(diào)用傳參數(shù)的shell腳本、調(diào)用python腳本的例子,需要的朋友可以參考下
    2015-01-01
  • NodeJs環(huán)境安裝與配置的實(shí)現(xiàn)步驟

    NodeJs環(huán)境安裝與配置的實(shí)現(xiàn)步驟

    本文主要介紹了NodeJs環(huán)境安裝與配置,包括配置環(huán)境和配置國(guó)內(nèi)鏡像,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • nodejs中全局變量的實(shí)例解析

    nodejs中全局變量的實(shí)例解析

    本文主要介紹了nodejs中全局變量的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • express框架下使用session的方法

    express框架下使用session的方法

    這篇文章主要介紹了express框架下使用session的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • NODE.JS加密模塊CRYPTO常用方法介紹

    NODE.JS加密模塊CRYPTO常用方法介紹

    這篇文章主要介紹了NODE.JS加密模塊CRYPTO常用方法介紹,需要的朋友可以參考下
    2014-06-06
  • 詳細(xì)分析Node.js 多進(jìn)程

    詳細(xì)分析Node.js 多進(jìn)程

    這篇文章主要介紹了Node.js 多進(jìn)程的的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 原生nodejs使用websocket代碼分享

    原生nodejs使用websocket代碼分享

    本文給大家分享的是在原生的nodejs中如何使用websocket實(shí)現(xiàn)信息傳輸,非常實(shí)用,有需要的小伙伴可以參考下
    2018-04-04
  • node.js?http模塊概念詳解

    node.js?http模塊概念詳解

    http?模塊是?Node.js?官方提供的、用來(lái)創(chuàng)建?web?服務(wù)器的模塊。通過(guò)?http?模塊提供的http.createServer()?方法,就能方便的把一臺(tái)普通的電腦,變成一臺(tái)?Web?服務(wù)器,從而對(duì)外提供?Web?資源服務(wù),本文給大家介紹node.js?http模塊的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-01-01

最新評(píng)論

陇南市| 阆中市| 漳州市| 高要市| 榆中县| 内乡县| 中阳县| 资源县| 济南市| 隆子县| 阿拉善右旗| 龙胜| 精河县| 怀来县| 涟水县| 安岳县| 班戈县| 隆尧县| 乌拉特前旗| 遂溪县| 平凉市| 额济纳旗| 温宿县| 宜章县| 龙山县| 赫章县| 乐昌市| 华蓥市| 新沂市| 肇源县| 邢台县| 天水市| 舒兰市| 广宗县| 南澳县| 柳林县| 渝中区| 雷山县| 阿尔山市| 都兰县| 大方县|