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

快速掌握Node.js事件驅(qū)動(dòng)模型

 更新時(shí)間:2016年03月21日 16:37:34   作者:小崔的筆記本  
這篇文章主要為大家詳細(xì)介紹了Node.js事件驅(qū)動(dòng)模型,首先了解一下傳統(tǒng)的線程網(wǎng)絡(luò)模型,然后再學(xué)習(xí)了解Node.js事件驅(qū)動(dòng)模型,感興趣的小伙伴們可以參考一下

一、傳統(tǒng)線程網(wǎng)絡(luò)模型

在了解Node.js事件驅(qū)動(dòng)模型之前,我們先了解一下傳統(tǒng)的線程網(wǎng)絡(luò)模型,請(qǐng)求進(jìn)入web服務(wù)器(IIS、Apache)之后,會(huì)在線程池中分配一個(gè)線程來(lái)線性同步完成請(qǐng)求處理,直到請(qǐng)求處理完成并發(fā)出響應(yīng),結(jié)束之后線程池回收。

這就會(huì)就會(huì)帶來(lái)以下幾個(gè)問(wèn)題 :

1.由于線程池中線程個(gè)數(shù)有限,對(duì)于頻繁請(qǐng)求時(shí),就會(huì)出現(xiàn)等待,嚴(yán)重的甚至?xí)逊?wù)器掛掉

2.對(duì)于高并發(fā)的時(shí)候,為了防止出現(xiàn)臟數(shù)據(jù)就會(huì)使用鎖來(lái)解決,一些I/O事務(wù)可能消耗很長(zhǎng)得時(shí)間,這樣就會(huì)出現(xiàn)一些線程等待,效率低下

二、事件驅(qū)動(dòng)模型

1.在Node.js中有一個(gè)事件隊(duì)列,每個(gè)任務(wù)都會(huì)放入事件隊(duì)列中,都會(huì)留下處理結(jié)果的回調(diào)函數(shù),事件循環(huán)線程(個(gè)人感覺(jué)有點(diǎn)類似ios中的RunLoop)處理事件隊(duì)列中的任務(wù),直到回調(diào)函數(shù)不再存在。

2. 在無(wú)阻塞的情況下,作為一個(gè)帶有回調(diào)的函數(shù)被放入事件隊(duì)列中,事件循環(huán)線程中被提取并執(zhí)行。

3.當(dāng)執(zhí)行過(guò)程中遇到I/O阻塞(讀取文件、查詢數(shù)據(jù)庫(kù)、請(qǐng)求套接字、訪問(wèn)遠(yuǎn)程服務(wù)等)時(shí),事件循環(huán)線程不會(huì)停下等待結(jié)果,轉(zhuǎn)而繼續(xù)執(zhí)行隊(duì)列中的下一個(gè)任務(wù),不會(huì)在事件循環(huán)線程中執(zhí)行。在函數(shù)執(zhí)行時(shí),Node.js在事件隊(duì)列中放置回調(diào)函數(shù),它的順序根據(jù)函數(shù)的完成快慢決定。

4.在1中也說(shuō)了當(dāng)遇到I/O阻塞,循環(huán)線程不會(huì)等待結(jié)果,轉(zhuǎn)而執(zhí)行隊(duì)列中的下一個(gè)任務(wù),那是該由誰(shuí)來(lái)執(zhí)行這個(gè)I/O操作呢?

Node.js使用事件回調(diào)來(lái)避免對(duì)阻塞I/O的等待,在后臺(tái)實(shí)現(xiàn)線程池,當(dāng)遇到I/O阻塞任務(wù)時(shí),會(huì)從線程池中獲取一個(gè)線程,將該函數(shù)及回調(diào)在那里執(zhí)行,在被阻塞的線程上執(zhí)行的回調(diào)函數(shù)仍然可以把事件添加到事件隊(duì)列中。

以上就是關(guān)于Node.js事件驅(qū)動(dòng)模型的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • 實(shí)戰(zhàn)node靜態(tài)文件服務(wù)器的示例代碼

    實(shí)戰(zhàn)node靜態(tài)文件服務(wù)器的示例代碼

    本篇文章主要介紹了實(shí)戰(zhàn)node靜態(tài)文件服務(wù)器的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 詳解Windows下安裝Nodejs步驟

    詳解Windows下安裝Nodejs步驟

    本篇文章主要介紹了詳解Windows下安裝Nodejs步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Node.js Domain 模塊實(shí)例詳解

    Node.js Domain 模塊實(shí)例詳解

    這篇文章主要介紹了Node.js Domain 模塊實(shí)例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Node.js中package.json中庫(kù)的版本號(hào)(~和^)

    Node.js中package.json中庫(kù)的版本號(hào)(~和^)

    這篇文章主要介紹了Node.js中package.json中庫(kù)的版本號(hào)(~和^),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-04-04
  • 基于node.js依賴express解析post請(qǐng)求四種數(shù)據(jù)格式

    基于node.js依賴express解析post請(qǐng)求四種數(shù)據(jù)格式

    本篇文章主要介紹了node.js依賴express解析post請(qǐng)求四種數(shù)據(jù)格式,主要是www-form-urlencoded,form-data,application/json,text/xml,有興趣的可以了解一下。
    2017-02-02
  • 淺析nodejs實(shí)現(xiàn)Websocket的數(shù)據(jù)接收與發(fā)送

    淺析nodejs實(shí)現(xiàn)Websocket的數(shù)據(jù)接收與發(fā)送

    WebSocket是HTML5開(kāi)始提供的一種瀏覽器與服務(wù)器間進(jìn)行全雙工通訊的網(wǎng)絡(luò)技術(shù),本文給大家介紹nodejs實(shí)現(xiàn)websocket的數(shù)據(jù)庫(kù)接收與發(fā)送,小伙伴們一起學(xué)習(xí)吧
    2015-11-11
  • 淺談node.js中間件有哪些類型

    淺談node.js中間件有哪些類型

    這篇文章主要介紹了node.js中間件有哪些類型,對(duì)中間件感興趣的同學(xué),可以參考下
    2021-04-04
  • node.js中的path.delimiter方法使用說(shuō)明

    node.js中的path.delimiter方法使用說(shuō)明

    這篇文章主要介紹了node.js中的path.delimiter方法使用說(shuō)明,本文介紹了path.delimiter的方法說(shuō)明、語(yǔ)法、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結(jié)

    Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結(jié)

    本文主要介紹了Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Node.js文件操作詳解

    Node.js文件操作詳解

    這篇文章主要介紹了Node.js文件操作詳解,本文講解了處理文件路徑講的一些方法、fs模塊詳細(xì)的使用和介紹等內(nèi)容,需要的朋友可以參考下
    2014-08-08

最新評(píng)論

泸溪县| 东乌珠穆沁旗| 濮阳县| 靖宇县| 东港市| 蚌埠市| 武邑县| 石棉县| 桐庐县| 香河县| 上杭县| 刚察县| 耒阳市| 永仁县| 西乌| 章丘市| 沙河市| 玛曲县| 于田县| 如皋市| 崇义县| 黄大仙区| 五峰| 惠安县| 炎陵县| 青岛市| 社旗县| 泰顺县| 敦化市| 平阳县| 广宗县| 福海县| 龙川县| 全椒县| 河源市| 从化市| 娄烦县| 板桥市| 上虞市| 紫阳县| 多伦县|