摘要:非阻塞下面我們繼續看看的第個特性非阻塞異步首先,看看什么是非阻塞呢操作,在程序中我們可以廣泛的認為是從數據庫讀數據從硬盤上讀寫文件等。當處理完畢后,是怎樣知道該完成了這里就要說到第個特性了事件驅動。
非阻塞I/O
下面我們繼續看看,nodejs的第2個特性--非阻塞I/O(異步I/O)
首先,看看什么是非阻塞I/O呢?I/O操作,在程序中我們可以廣泛的認為是:從數據庫讀數據、從硬盤上讀寫文件等。
在傳統的單線程阻塞I/O中(如下圖),
在程序運行到I/O操作時(從數據庫讀取數據),由于數據庫返回數據需要一定時間,程序在這個時候會暫停下來,等到數據庫成功返回數據后,才能繼續執行程序2后面的代碼;也就是說I/O阻塞了代碼的運行,極大地降低了程序的執行效率。
而nodejs采用了非阻塞I/O機制,在程序運行到I/O操作后,程序會立刻跳到程序2去執行,把數據庫返回的數據處理程序放到回調函數中,從而提高程序的執行效率。
阻塞模式下,一個線程只能處理一個任務,要提高服務器的吞吐量必須要用到多線程;而非阻塞下,線程永遠都在工作(事件棧中有事件的話),換句話說:這個線程的cpu利用率為100%。
當I/O處理完畢后,nodejs是怎樣知道該I/O完成了?這里就要說到第3個特性了--事件驅動。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93138.html
摘要:事件驅動在中,當某個執行完畢后,會以事件的形式通知執行操作的線程而線程去執行對應事件的回調函數。為了處理異步,線程必須要有事件循環,不斷的檢查有沒有事件要處理,并依次處理。其實在底層中,有一半的代碼,都是在處理事件隊列回調函數。 事件驅動 上一節中,我們提到異步I/O;當I/O處理完畢后,nodejs是怎樣知道I/O已經完成了呢?又是怎樣去處理的呢?答案是:事件驅動(事件循環)機制。 ...
摘要:是什么官網上的定義翻譯過來是一個基于引擎的運行環境。使用了一個事件驅動非阻塞式的模型,使其輕量又高效。的包管理器,是全球最大的開源庫生態系統。的特點非常重要單線程事件驅動事件循環非阻塞異步所謂的特點,就是是怎樣解決服務器高性能的問題。 nodejs是什么 nodejs官網(nodejs.org)上的定義:Node.js? is a JavaScript runtime built on...
摘要:特性單線程說明也許你會問,為什么還不安裝還不寫代碼還不講模塊前面我說過,不會一來就。另外,單線程中,操作系統沒有創建銷毀線程的時間開銷。單線程缺點如果有用戶造成線程崩潰,那個整個系統都崩潰了。 nodejs特性1--單線程 說明:也許你會問,為什么還不安裝nodejs?還不寫代碼?還不講模塊?前面我說過,不會一來就hello world。而是會先跟大家講講nodejs的特點,只有大家明...
摘要:異步和事件驅動注本文是對眾多博客的學習和總結,可能存在理解錯誤。接觸有兩個月,對的兩大特性一直有點模糊,即異步和事件驅動。 nodejs 異步I/O和事件驅動 注:本文是對眾多博客的學習和總結,可能存在理解錯誤。請帶著懷疑的眼光,同時如果有錯誤希望能指出。 接觸nodejs有兩個月,對nodejs的兩大特性一直有點模糊,即異步IO和事件驅動。通過對《深入淺出nodejs》和幾篇博客的閱...
摘要:適合做什么我們學習完一門新的技術,我們要知道它適用于什么場景。可以說是,極客追求極致性能的產物,缺少服務器健壯性的考慮。不建議使用在追求穩定的業務上,如銀行證券電信系統等。還有非常適合更配合,開發長連接的實時業務。 nodejs適合做什么 我們學習完一門新的技術,我們要知道它適用于什么場景。 nodejs可以說是,極客追求極致性能的產物,缺少服務器健壯性的考慮。不建議使用在追求穩定的業...
閱讀 642·2021-11-25 09:43
閱讀 1655·2021-11-18 10:02
閱讀 1033·2021-10-15 09:39
閱讀 1877·2021-10-12 10:18
閱讀 2115·2021-09-22 15:43
閱讀 756·2021-09-22 15:10
閱讀 2084·2019-08-30 15:53
閱讀 978·2019-08-30 13:00