kakts-log

programming について調べたことを整理していきます

node イベントループについて

nodeにおけるイベントループは、whileループ処理で実装されている。
ループ処理はI/Oイベントの処理の実行時や、I/Oイベントの発生待機のオブジェクト(ハンドル)の登録時に維持される。

以下のコードは、ハンドルもしくはリクエストが何も登録されていないために、
イベントループが維持されない。
つまり、このコードを実行するとnodeプロセスはすぐに終了します。


var http =require('http');
var server= http.createServer(function(){}); //プロセスはすぐに終了する
ここで、上記のコードに対して、server.listen()を加えることにより、ハンドル登録が行われる。 ハンドル登録時にループ処理が維持されるので、 以下のコードの場合、nodeのプロセスは終了しません。

var http =require('http');
var server=http.createServer(function(){});
server.listen(1400);
登録されたハンドルは、APIにより削除できる。 server.close()によりハンドル削除を行ったため、イベントループは維持されない。
var http =require('http');
var server=http.createServer(function(){});
server.listen(1400,function(){
server.close();//ハンドルが削除され、イベントループ終了 );