node.js multi-process

node.js本身並不支援multi-process,但是有其他方式可以達成。簡單來說,就是利用node.js的不會阻塞IO的特性,然後去執行終端機(terminal)的command line,然建立監聽事件,就可以達成multi-process。以有人實作出來,使用方法如同browserWorker,可以參考node.js的Worker

以下是一個簡單實作原理的範例:

main.js

var spawn = require('child_process').spawn,
    child_process = spawn('node', ['child.js']);

    child_process.stdout.on('data', function (data) {
      console.log('stdout: ' + data);
    }); 

    setInterval(function(){
      child_process.stdin.write("test");
    },199);

child.js

//當程式執行完畢,不關閉此程序
process.stdin.resume();
process.stdin.setEncoding('utf8');

process.stdin.on('data', function (chunk) {
    console.log('data: ' + chunk);
});

如果想要理解更多,請參考processchild_process的相關event,或者其他人實作的source code