Nodejs據說只使用一個進程來處理請求,然後這些使用I/O的函數將異步執行,這將提高Web服務器的效率。但是,那些處理I/O的進程不計數?與傳統的Web服務器相比,如Apache,它使用多線程來處理請求,其中每個請求在一個線程中,成本(請求+ I/O)是否降低?Nodejs的回調機制
回答
是的,node.js只需要一個線程(這比根據操作系統需要一個進程更具限制性)。是的,這會影響您的編程要求:
- 您的程序絕不能阻止!
有相當可以參考一些資源,至於爲什麼node.js的是如此之快,如:
http://www.manning.com/cantelon/NjsiA_meap_ch01.pdf
node.js的節省帶來的線程處罰通過上下文切換,其他服務器需要(參見Slebetman)。我們在2004年用C++構建了自己的這樣的服務器,由於高性能要求,當你的服務器必須打開和關閉很多連接時,這種方法確實節省了大量資源。
我認爲你在問題中缺少的是node.js將需要很長時間的操作交給操作系統並用回答調用。 O/S完全是多進程的。所以node.js只需要一個線程來控制,但I/O是由O/S進程控制的。
但是,node.js可以產生額外的進程,您可以在其中運行並行程序。
這是不正確的。看到我以前對這個問題的答案:http://stackoverflow.com/questions/3759683/how-node-js-server-is-better-than-thread-based-server/3759991#3759991 – slebetman
現在讓答案更加精確。心連心。我已經爲您的其他帖子+1了,謝謝。 –
- 1. 在回調的NodeJS
- 2. Nodejs readline回調
- 3. Nodejs和回調
- 4. nodejs從回調
- 5. 回調返回NULL的NodeJS
- 6. Redis MULTI事務在NodeJS的EXEC回調中隨機返回null
- 7. NodeJS - 回調錯誤
- 8. Nodejs回調異步
- 9. nodejs流vs回調
- 10. 卡住nodejs回調
- 11. Nodejs回調問題
- 12. NodeJS response.write回調內
- 13. 異步回調的NodeJS
- 14. 回調函數 - 的NodeJS
- 15. NodeJS:承諾內的回調
- 16. 回調的NodeJS不行
- 17. 在nodejs中回調內部回調?
- 18. Nodejs回調在回調中的Mysql回調
- 19. nodeJS來自回調的返回值
- 20. NodeJS中不同線程的回調本機擴展
- 21. 在Javascript中的回調機制
- 22. 背後的Javascript回調機制異步
- 23. Nodejs回調地獄在foreach
- 24. Nodejs + Express + mysql回調問題
- 25. nodejs socket.io回調邏輯
- 26. NodeJS SetImmediate和回調函數
- 27. NodeJS MongoDB回調地獄
- 28. Nodejs循環回調函數
- 29. Q Promise鏈和NodeJS回調
- 30. NodeJS循環等待回調
不是一個真正的編程問題.. –
你是認真的嗎?如果你不知道某種語言的內在機制,你怎麼編程? – qqibrow
[如何node.js服務器比基於線程的服務器更好]可能的重複(http://stackoverflow.com/questions/3759683/how-node-js-server-is-better-than-thread-based-server) – slebetman