0
如果節點只有兩個線程,一個執行主代碼,另一個執行所有回調,如果回調是資源/時間密集型的,那麼阻塞仍然會發生。在node.js中如何實現事件循環?
假設您擁有100,000個併發用戶,並且對節點應用程序的每個客戶端請求都會運行復雜且耗時的數據庫查詢(假設沒有緩存完成),以後的用戶在等待查詢返回時會遇到阻塞情況嗎?
function onRequest(request, response) {
//hypothetical database call
database.query("SELECT * FROM hugetable", function(data) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("database result: " + data);
response.end();
});
}
http.createServer(onRequest).listen(8888);
如果每個回調可以在其自己的線程上運行,那麼這是一個非問題。但是,如果所有的回調都在一個單獨的專用線程上運行,那麼在這種情況下節點並沒有真正幫助我們。