就是去處理其他請求。
Node.js的主執行緒是不會處於block(等待)狀態的,除非使用fs.readFileSync等node api裡的同步方法。
Node.js使用的是Reactor模式,凡是遇到需要block的地方,要麼使用系統的非同步API(網路請求),要麼扔到執行緒池裡(檔案讀寫)去做,主執行緒接著處理其他請求。
簡單描述Node.js主執行緒的工作順序:
執行到時的Timer
檢查非同步操作佇列裡是否有已完成的,並執行回撥
檢查新的連線
回到1
所以多請求併發的時候,Node.js本質上是在排隊,但是每個人等待的時間都很短,除非每個請求都耗費大量CPU時間。一般來說web server大多數時間都在等IO(網路請求),所以Node.js這種Reactor模式的Server對於CPU利用是相對高效的,避免了執行緒切換導致的的CPU上下文切換。
就是去處理其他請求。
Node.js的主執行緒是不會處於block(等待)狀態的,除非使用fs.readFileSync等node api裡的同步方法。
Node.js使用的是Reactor模式,凡是遇到需要block的地方,要麼使用系統的非同步API(網路請求),要麼扔到執行緒池裡(檔案讀寫)去做,主執行緒接著處理其他請求。
簡單描述Node.js主執行緒的工作順序:
執行到時的Timer
檢查非同步操作佇列裡是否有已完成的,並執行回撥
檢查新的連線
回到1
所以多請求併發的時候,Node.js本質上是在排隊,但是每個人等待的時間都很短,除非每個請求都耗費大量CPU時間。一般來說web server大多數時間都在等IO(網路請求),所以Node.js這種Reactor模式的Server對於CPU利用是相對高效的,避免了執行緒切換導致的的CPU上下文切換。