亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

快速學(xué)習(xí)nodejs系列:六、nodejs特性3--事件驅(qū)動

ashe / 545人閱讀

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

事件驅(qū)動

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

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

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

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

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/93165.html

相關(guān)文章

  • 快速學(xué)習(xí)nodejs系列:三、nodejs是什么

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

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

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

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

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

    cgspine 評論0 收藏0
  • 快速學(xué)習(xí)nodejs系列:二、nodejs誕生

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

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

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

    余學(xué)文 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<