Node.jsのイベントループROS勉強中-仕事、プライベートでエラーが出たら書いていきます。/Node.jsのイベントループ2011.03.31Node.jsのイベントループTweetNode.jsのイベントループについてJavaScriptはシングルスレッドなので「並行処理」を行うために、「ノンブロッキングI/O」で「非同期処理」を実現しておりNode.jsはイベントループと呼ばれるモデルを採用しています。イベントループのイベントキューにイベントが登録され、イベントハンドラを実行します。イベントハンドラの完了した結果は、イベントキューにコールバック関数を登録することで受け取ります。そのため、シングルスレッドでブロックするI/Oを行った場合、そのイベント完了後に次のイベントが実行されてしまう。並行処理させるためには、ノンブロッキングI/Oを使ってイベントの完了を待たずに次のイベントハンドラを実行させます。Node.jsはイベントを生成と処理の制御を行うのでファイルのリード、DBへのクエリ発行、HTTPサーバがリクエストを受けた時などにイベントが生成されます。テストファイルを作って試すとわかります。test.jsブラウザで「http://127.0.0.1:8080」にアクセス。test.jsListenStartStartEndResponseEndがResponseより先になっています。これはreadFile()にコールバック関数を登録しているので、非同期となり読み込み完了した時点で関数が呼び出されているからです。プログラムの書き方によっては非同期の部分をロックしてしまうので注意。Tweetnode.jsJavaScriptSNSでもご購読できます。