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

資訊專欄INFORMATION COLUMN

快速學(xué)習(xí)nodejs系列:五、nodejs特性2--非阻塞I/O

Baaaan / 2671人閱讀

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

非阻塞I/O

下面我們繼續(xù)看看,nodejs的第2個(gè)特性--非阻塞I/O(異步I/O)

首先,看看什么是非阻塞I/O呢?I/O操作,在程序中我們可以廣泛的認(rèn)為是:從數(shù)據(jù)庫(kù)讀數(shù)據(jù)、從硬盤(pán)上讀寫(xiě)文件等。

在傳統(tǒng)的單線程阻塞I/O中(如下圖),


在程序運(yùn)行到I/O操作時(shí)(從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)),由于數(shù)據(jù)庫(kù)返回?cái)?shù)據(jù)需要一定時(shí)間,程序在這個(gè)時(shí)候會(huì)暫停下來(lái),等到數(shù)據(jù)庫(kù)成功返回?cái)?shù)據(jù)后,才能繼續(xù)執(zhí)行程序2后面的代碼;也就是說(shuō)I/O阻塞了代碼的運(yùn)行,極大地降低了程序的執(zhí)行效率。

而nodejs采用了非阻塞I/O機(jī)制,在程序運(yùn)行到I/O操作后,程序會(huì)立刻跳到程序2去執(zhí)行,把數(shù)據(jù)庫(kù)返回的數(shù)據(jù)處理程序放到回調(diào)函數(shù)中,從而提高程序的執(zhí)行效率。

阻塞模式下,一個(gè)線程只能處理一個(gè)任務(wù),要提高服務(wù)器的吞吐量必須要用到多線程;而非阻塞下,線程永遠(yuǎn)都在工作(事件棧中有事件的話),換句話說(shuō):這個(gè)線程的cpu利用率為100%。

當(dāng)I/O處理完畢后,nodejs是怎樣知道該I/O完成了?這里就要說(shuō)到第3個(gè)特性了--事件驅(qū)動(dòng)。

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

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

相關(guān)文章

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

    摘要:事件驅(qū)動(dòng)在中,當(dāng)某個(gè)執(zhí)行完畢后,會(huì)以事件的形式通知執(zhí)行操作的線程而線程去執(zhí)行對(duì)應(yīng)事件的回調(diào)函數(shù)。為了處理異步,線程必須要有事件循環(huán),不斷的檢查有沒(méi)有事件要處理,并依次處理。其實(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ī)制。 ...

    ashe 評(píng)論0 收藏0
  • 快速學(xué)習(xí)nodejs系列:三、nodejs是什么

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

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

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

    cgspine 評(píng)論0 收藏0
  • nodejs 異步I/O和事件驅(qū)動(dòng)

    摘要:異步和事件驅(qū)動(dòng)注本文是對(duì)眾多博客的學(xué)習(xí)和總結(jié),可能存在理解錯(cuò)誤。接觸有兩個(gè)月,對(duì)的兩大特性一直有點(diǎn)模糊,即異步和事件驅(qū)動(dòng)。 nodejs 異步I/O和事件驅(qū)動(dòng) 注:本文是對(duì)眾多博客的學(xué)習(xí)和總結(jié),可能存在理解錯(cuò)誤。請(qǐng)帶著懷疑的眼光,同時(shí)如果有錯(cuò)誤希望能指出。 接觸nodejs有兩個(gè)月,對(duì)nodejs的兩大特性一直有點(diǎn)模糊,即異步IO和事件驅(qū)動(dòng)。通過(guò)對(duì)《深入淺出nodejs》和幾篇博客的閱...

    binaryTree 評(píng)論0 收藏0
  • 快速學(xué)習(xí)nodejs系列:七、nodejs適合做什么

    摘要:適合做什么我們學(xué)習(xí)完一門(mén)新的技術(shù),我們要知道它適用于什么場(chǎng)景??梢哉f(shuō)是,極客追求極致性能的產(chǎn)物,缺少服務(wù)器健壯性的考慮。不建議使用在追求穩(wěn)定的業(yè)務(wù)上,如銀行證券電信系統(tǒng)等。還有非常適合更配合,開(kāi)發(fā)長(zhǎng)連接的實(shí)時(shí)業(yè)務(wù)。 nodejs適合做什么 我們學(xué)習(xí)完一門(mén)新的技術(shù),我們要知道它適用于什么場(chǎng)景。 nodejs可以說(shuō)是,極客追求極致性能的產(chǎn)物,缺少服務(wù)器健壯性的考慮。不建議使用在追求穩(wěn)定的業(yè)...

    niceforbear 評(píng)論0 收藏0

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

0條評(píng)論

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