成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

快速學習nodejs系列:六、nodejs特性3--事件驅動

ashe / 529人閱讀

摘要:事件驅動在中,當某個執(zhí)行完畢后,會以事件的形式通知執(zhí)行操作的線程而線程去執(zhí)行對應事件的回調函數(shù)。為了處理異步,線程必須要有事件循環(huán),不斷的檢查有沒有事件要處理,并依次處理。其實在底層中,有一半的代碼,都是在處理事件隊列回調函數(shù)。

事件驅動

上一節(jié)中,我們提到異步I/O;當I/O處理完畢后,nodejs是怎樣知道I/O已經(jīng)完成了呢?又是怎樣去處理的呢?答案是:事件驅動(事件循環(huán))機制。

事件驅動:
在nodejs中,當某個I/O執(zhí)行完畢后,會以事件的形式通知執(zhí)行I/O操作的線程;而線程去執(zhí)行對應事件的回調函數(shù)。為了處理異步I/O,nodejs線程必須要有事件循環(huán),不斷的檢查有沒有事件要處理,并依次處理。

對于nodejs來說,不論是建立新的請求、提交、獲取數(shù)據(jù)等,一切的行為都會觸發(fā)相應的事件。在同一個時刻,只能執(zhí)行一個事件的回調函數(shù),但是在執(zhí)行事件回調的途中,是可以去處理其他事件的(如有新連接),然后返回繼續(xù)執(zhí)行原事件函數(shù),這樣的處理機制,我們稱為事件循環(huán)機制。其實在nodejs底層中,有一半的c++代碼,都是在處理事件隊列、回調函數(shù)。

好的,到這里我們已經(jīng)學完了nodejs的3個特性!我們來做個總結
nodejs的特性有3個:單線程、non-blocking I/O(非阻塞I/O)、event-driven(事件驅動);其實這3個特性都是在說同一件事。我們可以這樣理解:nodejs使用的是單線程,如果多個任務(I/O)同時過來了,某個I/O是阻塞的話,那其他任務都會在等,這樣性能就不會高了;這時就要異步I/O了,所有的I/O操作都要異步;這樣異步I/O就好了嗎?還沒完,如果正在執(zhí)行A任務,這時B的I/O回調了,怎么辦?這就要事件循環(huán)了,不管是新用戶連接,還是老用戶I/O完成,都以事件的形式加入事件循環(huán)中,等待nodejs調度。(nodejs可以想象成是一個非常非常摳門的老板,只請一個服務員做所有的事情,但工作效率比請多個人還要高)

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/93165.html

相關文章

  • 快速學習nodejs系列:三、nodejs是什么

    摘要:是什么官網(wǎng)上的定義翻譯過來是一個基于引擎的運行環(huán)境。使用了一個事件驅動非阻塞式的模型,使其輕量又高效。的包管理器,是全球最大的開源庫生態(tài)系統(tǒng)。的特點非常重要單線程事件驅動事件循環(huán)非阻塞異步所謂的特點,就是是怎樣解決服務器高性能的問題。 nodejs是什么 nodejs官網(wǎng)(nodejs.org)上的定義:Node.js? is a JavaScript runtime built on...

    zilu 評論0 收藏0
  • 快速學習nodejs系列:五、nodejs特性2--非阻塞I/O

    摘要:非阻塞下面我們繼續(xù)看看的第個特性非阻塞異步首先,看看什么是非阻塞呢操作,在程序中我們可以廣泛的認為是從數(shù)據(jù)庫讀數(shù)據(jù)從硬盤上讀寫文件等。當處理完畢后,是怎樣知道該完成了這里就要說到第個特性了事件驅動。 非阻塞I/O 下面我們繼續(xù)看看,nodejs的第2個特性--非阻塞I/O(異步I/O) 首先,看看什么是非阻塞I/O呢?I/O操作,在程序中我們可以廣泛的認為是:從數(shù)據(jù)庫讀數(shù)據(jù)、從硬盤上讀...

    Baaaan 評論0 收藏0
  • 快速學習nodejs系列:四、nodejs特性1--單線程

    摘要:特性單線程說明也許你會問,為什么還不安裝還不寫代碼還不講模塊前面我說過,不會一來就。另外,單線程中,操作系統(tǒng)沒有創(chuàng)建銷毀線程的時間開銷。單線程缺點如果有用戶造成線程崩潰,那個整個系統(tǒng)都崩潰了。 nodejs特性1--單線程 說明:也許你會問,為什么還不安裝nodejs?還不寫代碼?還不講模塊?前面我說過,不會一來就hello world。而是會先跟大家講講nodejs的特點,只有大家明...

    cgspine 評論0 收藏0
  • 快速學習nodejs系列:二、nodejs誕生

    摘要:簡介的誕生學習一門技術之前,有必要了解該技術是如何誕生的是之父于年發(fā)布的。其在紐約羅切斯特大學數(shù)學系讀博,研究一些分型分類的研究。年月,把項目定義為同年月,向外界宣布這個項目年底,在柏林的大會上進行的演講,之后開始流行 nodejs簡介 1.nodejs的誕生 學習一門技術之前,有必要了解該技術是如何誕生的? nodejs是ryan dahl(nodejs 之父)于2009年發(fā)布的。 ...

    tangr206 評論0 收藏0
  • 雙十二大前端工程師讀書清單

    摘要:本文最早為雙十一而作,原標題雙大前端工程師讀書清單,以付費的形式發(fā)布在上。發(fā)布完本次預告后,捕捉到了一個友善的吐槽讀書清單也要收費。這本書便從的異步編程講起,幫助我們設計快速響應的網(wǎng)絡應用,而非簡單的頁面。 本文最早為雙十一而作,原標題雙 11 大前端工程師讀書清單,以付費的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進行了深入的交流,現(xiàn)免費分享到這里,不足之處歡迎指教...

    happen 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<