欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

快速掌握Node.js事件驅動模型

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

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

在了解Node.js事件驅動模型之前,我們先了解一下傳統(tǒng)的線程網(wǎng)絡模型,請求進入web服務器(IIS、Apache)之后,會在線程池中分配一個線程來線性同步完成請求處理,直到請求處理完成并發(fā)出響應,結束之后線程池回收。

這就會就會帶來以下幾個問題 :

1.由于線程池中線程個數(shù)有限,對于頻繁請求時,就會出現(xiàn)等待,嚴重的甚至會把服務器掛掉

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

二、事件驅動模型

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

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

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

4.在1中也說了當遇到I/O阻塞,循環(huán)線程不會等待結果,轉而執(zhí)行隊列中的下一個任務,那是該由誰來執(zhí)行這個I/O操作呢?

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

以上就是關于Node.js事件驅動模型的全部內容,希望對大家的學習有所幫助。

相關文章

  • websocket結合node.js實現(xiàn)雙向通信的示例代碼

    websocket結合node.js實現(xiàn)雙向通信的示例代碼

    本文主要介紹了websocket結合node.js實現(xiàn)雙向通信的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • node的process以及child_process模塊學習筆記

    node的process以及child_process模塊學習筆記

    這篇文章主要介紹了node的process以及child_process模塊學習筆記,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Mac 安裝 nodejs方法(圖文詳細步驟)

    Mac 安裝 nodejs方法(圖文詳細步驟)

    這篇文章主要介紹了Mac 安裝 nodejs方法(圖文詳細步驟),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Node.js常用工具之util模塊

    Node.js常用工具之util模塊

    util是一個Node.js核心模塊,提供常用函數(shù)的集合,用于彌補JavaScript的功能的不足,util模塊設計的主要目的是為了滿足Node內部API的需求。下面這篇文章將詳細的介紹關于Node.js常用工具之util模塊的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • nodejs同步調用獲取mysql數(shù)據(jù)時遇到的大坑

    nodejs同步調用獲取mysql數(shù)據(jù)時遇到的大坑

    今天小編就為大家分享一篇關于nodejs同步調用獲取mysql數(shù)據(jù)時遇到的大坑,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • node.js實現(xiàn)websocket的即時通訊詳解

    node.js實現(xiàn)websocket的即時通訊詳解

    這篇文章主要介紹了深入淺出講解websocket的即時通訊,服務器可以主動向客戶端推送信息,客戶端也可以主動向服務器發(fā)送信息,是真正的雙向平等對話,屬于服務器推送技術的一種,需要的朋友可以參考下
    2023-05-05
  • 150行Node.js實現(xiàn)的dns代理工具

    150行Node.js實現(xiàn)的dns代理工具

    這篇文章主要介紹了150行Node.js實現(xiàn)的dns代理工具,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 全面解析Node.js 8 重要功能和修復

    全面解析Node.js 8 重要功能和修復

    5月30日12點,Node.js 8正式發(fā)布了,這個版本具有一系列新功能和性能改進,并且這些功能和改進將獲得長期支持(LTS)。下面就來介紹Node.js 8版本中最重要的功能和修復
    2017-06-06
  • node.js中的fs.link方法使用說明

    node.js中的fs.link方法使用說明

    這篇文章主要介紹了node.js中的fs.link方法使用說明,本文介紹了fs.link的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • node 標準輸入流和輸出流代碼實例

    node 標準輸入流和輸出流代碼實例

    這篇文章主要介紹了node 標準輸入流和輸出流代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論