ノードに 2 つのスレッドがあり、1 つはメイン コードを実行し、もう 1 つはすべてのコールバックを実行する場合、コールバックがリソース/時間を集中的に使用する場合、ブロックが発生する可能性があります。
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);
各コールバックが独自のスレッドで実行できる場合、これは問題ではありません。しかし、すべてのコールバックが単一の個別の専用スレッドで実行される場合、そのようなシナリオではノードはあまり役に立ちません。