成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

ashe / 484人閱讀

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

事件驅(qū)動(dòng)

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

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

對(duì)于nodejs來說,不論是建立新的請(qǐng)求、提交、獲取數(shù)據(jù)等,一切的行為都會(huì)觸發(fā)相應(yīng)的事件。在同一個(gè)時(shí)刻,只能執(zhí)行一個(gè)事件的回調(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個(gè)特性!我們來做個(gè)總結(jié)
nodejs的特性有3個(gè):?jiǎn)尉€程、non-blocking I/O(非阻塞I/O)、event-driven(事件驅(qū)動(dòng));其實(shí)這3個(gè)特性都是在說同一件事。我們可以這樣理解:nodejs使用的是單線程,如果多個(gè)任務(wù)(I/O)同時(shí)過來了,某個(gè)I/O是阻塞的話,那其他任務(wù)都會(huì)在等,這樣性能就不會(huì)高了;這時(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可以想象成是一個(gè)非常非常摳門的老板,只請(qǐng)一個(gè)服務(wù)員做所有的事情,但工作效率比請(qǐng)多個(gè)人還要高)

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93165.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<