摘要:事件驅動在中,當某個執行完畢后,會以事件的形式通知執行操作的線程而線程去執行對應事件的回調函數。為了處理異步,線程必須要有事件循環,不斷的檢查有沒有事件要處理,并依次處理。其實在底層中,有一半的代碼,都是在處理事件隊列回調函數。
事件驅動
上一節中,我們提到異步I/O;當I/O處理完畢后,nodejs是怎樣知道I/O已經完成了呢?又是怎樣去處理的呢?答案是:事件驅動(事件循環)機制。
事件驅動:
在nodejs中,當某個I/O執行完畢后,會以事件的形式通知執行I/O操作的線程;而線程去執行對應事件的回調函數。為了處理異步I/O,nodejs線程必須要有事件循環,不斷的檢查有沒有事件要處理,并依次處理。
對于nodejs來說,不論是建立新的請求、提交、獲取數據等,一切的行為都會觸發相應的事件。在同一個時刻,只能執行一個事件的回調函數,但是在執行事件回調的途中,是可以去處理其他事件的(如有新連接),然后返回繼續執行原事件函數,這樣的處理機制,我們稱為事件循環機制。其實在nodejs底層中,有一半的c++代碼,都是在處理事件隊列、回調函數。
好的,到這里我們已經學完了nodejs的3個特性!我們來做個總結:
nodejs的特性有3個:單線程、non-blocking I/O(非阻塞I/O)、event-driven(事件驅動);其實這3個特性都是在說同一件事。我們可以這樣理解:nodejs使用的是單線程,如果多個任務(I/O)同時過來了,某個I/O是阻塞的話,那其他任務都會在等,這樣性能就不會高了;這時就要異步I/O了,所有的I/O操作都要異步;這樣異步I/O就好了嗎?還沒完,如果正在執行A任務,這時B的I/O回調了,怎么辦?這就要事件循環了,不管是新用戶連接,還是老用戶I/O完成,都以事件的形式加入事件循環中,等待nodejs調度。(nodejs可以想象成是一個非常非常摳門的老板,只請一個服務員做所有的事情,但工作效率比請多個人還要高)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/93165.html
摘要:是什么官網上的定義翻譯過來是一個基于引擎的運行環境。使用了一個事件驅動非阻塞式的模型,使其輕量又高效。的包管理器,是全球最大的開源庫生態系統。的特點非常重要單線程事件驅動事件循環非阻塞異步所謂的特點,就是是怎樣解決服務器高性能的問題。 nodejs是什么 nodejs官網(nodejs.org)上的定義:Node.js? is a JavaScript runtime built on...
摘要:非阻塞下面我們繼續看看的第個特性非阻塞異步首先,看看什么是非阻塞呢操作,在程序中我們可以廣泛的認為是從數據庫讀數據從硬盤上讀寫文件等。當處理完畢后,是怎樣知道該完成了這里就要說到第個特性了事件驅動。 非阻塞I/O 下面我們繼續看看,nodejs的第2個特性--非阻塞I/O(異步I/O) 首先,看看什么是非阻塞I/O呢?I/O操作,在程序中我們可以廣泛的認為是:從數據庫讀數據、從硬盤上讀...
摘要:特性單線程說明也許你會問,為什么還不安裝還不寫代碼還不講模塊前面我說過,不會一來就。另外,單線程中,操作系統沒有創建銷毀線程的時間開銷。單線程缺點如果有用戶造成線程崩潰,那個整個系統都崩潰了。 nodejs特性1--單線程 說明:也許你會問,為什么還不安裝nodejs?還不寫代碼?還不講模塊?前面我說過,不會一來就hello world。而是會先跟大家講講nodejs的特點,只有大家明...
摘要:簡介的誕生學習一門技術之前,有必要了解該技術是如何誕生的是之父于年發布的。其在紐約羅切斯特大學數學系讀博,研究一些分型分類的研究。年月,把項目定義為同年月,向外界宣布這個項目年底,在柏林的大會上進行的演講,之后開始流行 nodejs簡介 1.nodejs的誕生 學習一門技術之前,有必要了解該技術是如何誕生的? nodejs是ryan dahl(nodejs 之父)于2009年發布的。 ...
摘要:本文最早為雙十一而作,原標題雙大前端工程師讀書清單,以付費的形式發布在上。發布完本次預告后,捕捉到了一個友善的吐槽讀書清單也要收費。這本書便從的異步編程講起,幫助我們設計快速響應的網絡應用,而非簡單的頁面。 本文最早為雙十一而作,原標題雙 11 大前端工程師讀書清單,以付費的形式發布在 GitChat 上。發布之后在讀者圈群聊中和讀者進行了深入的交流,現免費分享到這里,不足之處歡迎指教...
閱讀 3155·2021-11-23 10:02
閱讀 3126·2021-11-16 11:53
閱讀 3103·2021-09-23 11:21
閱讀 3378·2019-08-30 13:02
閱讀 1637·2019-08-29 16:18
閱讀 1568·2019-08-29 12:55
閱讀 1462·2019-08-26 12:24
閱讀 2094·2019-08-26 10:36