7

ここからnode.js、ノンブロッキング I/O モデルを実装していることがわかりました。しかし、私は方法を理解していません。

javascript はシングル スレッドです。単一のスレッドがどのように i/o 操作を実行し、同時に後続のプロセスを実行することができますか。

4

3 に答える 3

10

スリープなどの操作がスレッドをブロックすることは事実です。しかし、I/O イベントは実際には非同期になる可能性があります。

Node.js はこれにイベント ループを使用します。イベント ループは、「外部イベントを処理および処理し、それらをコールバック呼び出しに変換するエンティティ」です。</p>

データが必要になるたびに、nodejs はコールバックを登録し、操作をこのイベント ループに送信します。データが利用可能になるたびに、コールバックが呼び出されます。

http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/詳細はこちら

于 2013-08-20T11:11:02.403 に答える
9

によって処理される I/O は、node.js内部的にマルチスレッド化されています。

これは、シングル スレッドで非同期のプログラミング インターフェイスです。

于 2013-08-20T11:10:08.180 に答える
0

Ryan Dahl: JSConf 2009 でのオリジナルの Node.js プレゼンテーション(Ryan は Node.js の作成者です)

このビデオはあなたの質問に答えます。

JavaScript(v8) の本質は、イベント コールバック (ボタン onclick="functions()" など) です。これが、I/O がマルチスレッド化されている方法です。I/O をブロックしないようにするには、コールバックを記述するだけでコードを記述する必要があります。そうしないと、コードは db.query 応答を待機し、次のコード行を実行する前にブロックされます。

于 2014-04-15T05:56:15.797 に答える