大津です。
解決して何よりです。
ついでにですが今回の件は違う面からみるとある意味教育的な
ところがありまして、現象として
「今回の whiile(true) {} などのように node のプロセスCPU を食い
つぶす処理を行うと、見た目 Node がハングしたようになる。」
ということだったんじゃないかと思います。
これは昨年話題となった "Node.js is Cancer"
http://teddziuba.com/2011/10/node-js-is-cancer.html で
「フィボナッチ数を計算して出力するだけなのに Node.js はこんな
に遅くて使えない。」
といったことと同じで、
「プロセスのCPUを使う重い処理は(イベントループに影響を与えるので)
Node には向かない」
といわれる所以です。(先のフィボナッチ処理も process.nextTick() の再帰
処理で実装すると非常に高速になりました。)
でも、重い処理だけど iterative にできない Node で使うにはどうしたら?
というケースもあるかもしれません。
そんな時は処理を外出しするのも一つの方法です。
今回の例を cluster で外出しするとこんな感じです。重い処理を worker に
やらせるので master の方は signal を受けて処理するだけになります。
node-v0.8 では Cluster 関連の API、イベントが多く追加され、これまで以上
に柔軟な worker 制御が可能になります。近日のリリースを楽しみにして下さい。
------------------------------------------------------------
var cluster = require('cluster');
if (cluster.isMaster) {
var worker = cluster.fork();
process.on('SIGUSR1', function (){
process.kill(worker.pid);
console.log("usr1.");
process.exit(100);
});
process.on('SIGINT', function (){
process.kill(worker.pid);
console.log("interrupted.");
process.exit(200);
});
process.on('exit', function (){
console.log("exit.");
});
cluster.on('death', function(w) {
process.exit(10);
});
} else {