第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

nodejs是不是只能一個(gè)請(qǐng)求一個(gè)請(qǐng)求排隊(duì)處理?

nodejs是不是只能一個(gè)請(qǐng)求一個(gè)請(qǐng)求排隊(duì)處理?

婷婷同學(xué)_ 2018-08-06 10:09:07
試看一個(gè)express的Node網(wǎng)站,如果不開PM2或者Cluster。那么意味著只有單線程在處理Node的請(qǐng)求,現(xiàn)在有很多人一起請(qǐng)求,是不是這些人會(huì)排隊(duì),一個(gè)一個(gè)的處理呢?如果邏輯中間有異步代碼,那么在回調(diào)之前(正在Io,是不消耗Cpu的,Node在等待之中),此時(shí)Node在干什么?不太可能在Io期間Node去處理其他請(qǐng)求吧?
查看完整描述

1 回答

?
神不在的星期二

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊

就是去處理其他請(qǐng)求。

Node.js的主線程是不會(huì)處于block(等待)狀態(tài)的,除非使用fs.readFileSync等node api里的同步方法。

Node.js使用的是Reactor模式,凡是遇到需要block的地方,要么使用系統(tǒng)的異步API(網(wǎng)絡(luò)請(qǐng)求),要么扔到線程池里(文件讀寫)去做,主線程接著處理其他請(qǐng)求。

簡單描述Node.js主線程的工作順序:

  1. 執(zhí)行到時(shí)的Timer

  2. 檢查異步操作隊(duì)列里是否有已完成的,并執(zhí)行回調(diào)

  3. 檢查新的連接

  4. 回到1

所以多請(qǐng)求并發(fā)的時(shí)候,Node.js本質(zhì)上是在排隊(duì),但是每個(gè)人等待的時(shí)間都很短,除非每個(gè)請(qǐng)求都耗費(fèi)大量CPU時(shí)間。一般來說web server大多數(shù)時(shí)間都在等IO(網(wǎng)絡(luò)請(qǐng)求),所以Node.js這種Reactor模式的Server對(duì)于CPU利用是相對(duì)高效的,避免了線程切換導(dǎo)致的的CPU上下文切換。


查看完整回答
反對(duì) 回復(fù) 2018-09-22
  • 1 回答
  • 0 關(guān)注
  • 1387 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)