/ / NodeJS: क्या यह कोड मल्टी-कोर चलेगा या नहीं? - नोड.जेएस

NodeJS: यह कोड मल्टी कोर चला जाएगा या नहीं?-नोड. js

मैं इस नोड स्क्रिप्ट का उपयोग अपने लिए "रनर" के रूप में कर रहा हूंप्रोजेक्ट (एक ही समय में तीन स्क्रिप्ट शुरू / बंद करने की आवश्यकता)। अब मुझे आश्चर्य है कि अगर एक नोड प्रक्रिया के अंदर से child_process "स्पॉन" होगा या जीतता है "तो मल्टी कोर का उपयोग करें जो मेरे सर्वर पर होगा (मैं हाँ पर 90% आश्वस्त हूं, लेकिन खेद से बेहतर है)।


var CP = require("child_process")
, children = [ "server1", "server2", "server3" ]
, child

children.forEach(function(name) {

child = CP.spawn("node", [name] )

child.stdout.on("data", function (data) {
process.stdout.write(data.toString());
})

child.stderr.on("data", function (data) {
process.stdout.write(data.toString());
})
}
});

ओएस उबुन्टु लिनक्स है।

उत्तर:

उत्तर № 1 के लिए 7

हाँ। spawn() OS- स्तर पर पूरी तरह से नई प्रक्रियाएँ बनाता है।

और आप इसे उपयोग करके थोड़ा सरल भी कर सकते हैं pipe():

var spawn = require("child_process").spawn
, children = [ "server1", "server2", "server3" ]
, child

children.forEach(function(name) {
child = spawn("node", [name] )

child.stdout.pipe(process.stdout);
child.stderr.pipe(process.stderr);

// Catch errors (dies quite hard on first child with non-zero exit code...)
child.on("exit", function (code) {
if(code !== 0) {
process.exit(code);
}
});
});

(पर श्रोता भी जोड़ा गया exit, इसलिए यह किसी तरह से त्रुटियों को कम से कम प्रचारित करेगा। यदि यह कुछ ऐसा है जो आप करना चाहते हैं, तो आप अंतिम प्रक्रिया समाप्त होने तक उन पर नज़र रखना चाहते हैं, और फिर कॉल कर सकते हैं process.exit() सबसे बड़े या सबसे छोटे कोड के साथ ...)


जवाब के लिए 0 № 2

यह पूरी तरह से कई कोर का उपयोग करेगा। नोड ने "टी" नहीं जीता, और कभी भी, एक बच्चे की प्रक्रिया को एक विशिष्ट सीपीयू या सीपीयू कोर से बाँधना चाहिए।