Tamamen yeni başlayan bir node.js kullanıcısıyım. Tüm cpu çekirdeklerinde dizeleri işleyen bir işlevi yürüten bir kod parçam var ve hangi işlevin ilk önce kimliği tamamladığını ve her işçiyi (ya da yalnızca çıkış düğümünden) öldürdüğünü belirlemek istiyorum.İşlev bittikten sonra noiling.js çalışanları Killing
İşte benim programın basitleştirilmiş kod:
var cluster = require('cluster'),
cpus = require("os").cpus().length, // 4 cores
myArray = ["foo","bar","baz","qux"]; // 1 string per core
if (cluster.isMaster) {
for (var i = 0; i < cpus; i++) {
var worker = cluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died');
});
} else if (cluster.isWorker) {
computeString(myArray[cluster.worker.id]);
}
function computeString() {
// Code to compute...
}
Bu kod çalışır ve Yani sorun olduğunu computeString() işlevi
else if (cluster.isWorker) {}
dışına idam etmekten çok daha hızlı bitirir sonra Bir işçi/süreç fonksiyonu tamamlarsa, düğüm her işlem işini yapana kadar bekler ve bunlardan sonra sona ermez, her işlem ctrl + c tuşlarına basana kadar boşta kalır.
Benim yaklaşımım vardı:
function computeString() {
// Code to compute...
if (done) {
console.log("Worker #" + cluster.worker + " completed the task!");
for (var id in cluster.workers) {
cluster.workers[id].kill();
}
}
}
Ama burada soruyorum çünkü, belli ki çalışmıyor :)
i öldürmek ve bir koşul doğru olduğunda tek işçiyi tek yeniden başlatmak istiyorum dosyamın, tam olarak bu kullanım durumuna bağlı olduğunu – mithra
@mithra hakkında bizi aydınlatabilir ediniz. Belki de, yapmaya çalıştığınız şeyi tam olarak açıklayan yeni bir soru oluşturabilirsiniz. – robertklep