पर फ़ंक्शन परिभाषाओं के साथ एक ऑब्जेक्ट भेज रहा है इसलिए मैं नोड.जेएस में एक प्रोजेक्ट पर काम कर रहा हूं और मैं प्रोसेसिंग लोड को अधिक कुशलता से संभालने के लिए कुछ अतिरिक्त धागे खोलना चाहता हूं। लेकिन मैं उनके साथ फ़ंक्शन परिभाषाओं के साथ कक्षाओं का उपयोग कर रहा हूं और जब मैं उन ऑब्जेक्ट्स को कार्यकर्ता थ्रेड पर भेजने का प्रयास करता हूं, तो ऑब्जेक्ट में परिभाषित फ़ंक्शंस गायब हो जाते हैं और मुझे केवल ऑब्जेक्ट के अन्य फ़ील्ड के साथ छोड़ दिया जाता है। क्या कार्यकर्ता को एक वस्तु भेजने और कार्यों को संरक्षित करने का कोई तरीका है ताकि उन्हें कार्यकर्ता के भीतर बुलाया जा सके?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 रास्ता नहीं है। –