所以我正在Node.js中的一個項目上工作,我想打開一些額外的線程來更有效地處理處理負載。但是我使用帶有函數定義的類,並且當我嘗試將這些對象發送給工作線程時,對象中定義的函數消失,我只剩下對象中的其他字段。有沒有辦法向工作人員發送一個對象並保留這些功能,以便可以在工作人員中調用它們?Node.js發送一個帶有函數定義的對象到工作線程
var cluster = require('cluster');
if(cluster.isMaster){
Monster = function(species){
this.attack = function(){
console.log('CHOMP');
};
this.name = species;
};
var vamp = new Monster('vampire'),
worker = cluster.fork();
worker.send({'monster' : vamp});
}
else{
process.on('message', function(msg) {
console.log(msg.monster); //this logs "{ name: 'vampire' }"
msg.monster.attack(); //TypeError: Object #<Object> has no method 'attack'
});
}
哇,這真的限制了集羣模塊的功能。你知道是否有任何計劃將它添加到Node.js? –
此功能與node.js體系結構相反。 Node.js事件循環在單線程中工作。集羣模塊只是啓動新的進程。他們都有自己的獨立記憶。多線程體系結構的實現需要支持具有共享內存和相關機制的線程,例如「互斥體」和「信號量」。這不是node.js的方式。 –