兒童過程
當人們想要使用不同的初始化和關注點獨立執行程序時,子程序是一種可行的方法。就像群集中的叉子一樣,child_process
在其執行緒中執行,但與叉子不同,它有一種與其父節點通訊的方式。
通訊是雙向的,因此父母和孩子可以收聽訊息併傳送訊息。
家長 (../ parent.js)
var child_process = require('child_process');
console.log('[Parent]', 'initalize');
var child1 = child_process.fork(__dirname + '/child');
child1.on('message', function(msg) {
console.log('[Parent]', 'Answer from child: ', msg);
});
// one can send as many messages as one want
child1.send('Hello'); // Hello to you too :)
child1.send('Hello'); // Hello to you too :)
// one can also have multiple children
var child2 = child_process.fork(__dirname + '/child');
孩子 (../child.js)
// here would one initialize this child
// this will be executed only once
console.log('[Child]', 'initalize');
// here one listens for new tasks from the parent
process.on('message', function(messageFromParent) {
//do some intense work here
console.log('[Child]', 'Child doing some intense work');
if(messageFromParent == 'Hello') process.send('Hello to you too :)');
else process.send('what?');
})
訊息旁邊可以收聽許多事件, 如錯誤,已連線或斷開連線。
啟動子程序具有與之相關的特定成本。人們希望儘可能少地產卵。