0

私はThe Node Beginners bookを読んでいて、ノード js による処理を要求する「同期方法」について疑問を持っていました。つまり、私のウェブサイトには開始とアップロードの 2 つのページがあり (チュートリアルに従って)、2 つのページに同時要求を行うと、要求は連続して処理されます (最初の開始がフェッチされ、次にアップロードがフェッチされるように)。私の Web サイトが 1 秒あたり 100 のリクエストを受信した場合 (そして単一のノード プロセスのみを実行している場合)、これらのリクエストはすべてシリアルに処理されます。ルーターにとっては意味がありませんか
setTimeOut ( setTimeOut(handler(response), 0) のようなもの) ですべての requestHandlers を呼び出すには? このようにして、ルーターのタスクは、ハンドラーの呼び出しと待機中の次の要求への移動に限定されます。もちろん、ページのサイズと操作によっては、ページの読み込みに時間がかかりますが、少なくともその時間は、他のページで待機するのではなく、重要な作業に使用されます。

また、ノードが単一のプロセスを実行することも理解しています。しかし、それは複数のスレッドを実行しますよね?

4

1 に答える 1

1

最後の質問に答えるために、Node プログラム用に JavaScript で記述したすべてのコードは単一のスレッドで実行されます。非同期 I/O タスクはlibuvによって抽象化されます。

あなたは 2 つのリクエストについて十分に細かく考えていないと思います。あなたが言った、

最初の開始が取得され、次にアップロードが取得されます

しかし、実際には、Web の要求と応答は、JavaScript プログラムで行う処理だけでなく、さまざまな IO タスクで構成されています。たとえば、データが「開始」ハンドラーのソケットを介してストリーミングされている間、データは「アップロード」ハンドラーのプログラムにストリーミングされることもあります。

于 2012-07-06T02:05:02.290 に答える