ここからnode.js
、ノンブロッキング I/O モデルを実装していることがわかりました。しかし、私は方法を理解していません。
javascript はシングル スレッドです。単一のスレッドがどのように i/o 操作を実行し、同時に後続のプロセスを実行することができますか。
ここからnode.js
、ノンブロッキング I/O モデルを実装していることがわかりました。しかし、私は方法を理解していません。
javascript はシングル スレッドです。単一のスレッドがどのように i/o 操作を実行し、同時に後続のプロセスを実行することができますか。
スリープなどの操作がスレッドをブロックすることは事実です。しかし、I/O イベントは実際には非同期になる可能性があります。
Node.js はこれにイベント ループを使用します。イベント ループは、「外部イベントを処理および処理し、それらをコールバック呼び出しに変換するエンティティ」です。</p>
データが必要になるたびに、nodejs はコールバックを登録し、操作をこのイベント ループに送信します。データが利用可能になるたびに、コールバックが呼び出されます。
http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/詳細はこちら
によって処理される I/O は、node.js
内部的にマルチスレッド化されています。
これは、シングル スレッドで非同期のプログラミング インターフェイスです。
Ryan Dahl: JSConf 2009 でのオリジナルの Node.js プレゼンテーション(Ryan は Node.js の作成者です)
このビデオはあなたの質問に答えます。
JavaScript(v8) の本質は、イベント コールバック (ボタン onclick="functions()" など) です。これが、I/O がマルチスレッド化されている方法です。I/O をブロックしないようにするには、コールバックを記述するだけでコードを記述する必要があります。そうしないと、コードは db.query 応答を待機し、次のコード行を実行する前にブロックされます。