var http = memerlukan('http');
fungsi fib (n) {
Jika (n < 2) {
kembali 1;
} lain {
Kembalikan fib(n - 2) fib(n - 1);
}
}
pelayan var = http.createServer(fungsi (req, res) {
var num = parseInt(req.url.substring(1), 10);
res.writeHead(200);
res.end(fib(bilangan) "n");
});
server.listen(8000);
Contoh di atas menyediakan perkhidmatan pengiraan jujukan Fibonacci Memandangkan pengiraan ini agak memakan masa dan berutas tunggal, apabila terdapat berbilang permintaan pada masa yang sama, hanya satu yang boleh diproses oleh child_process. fork() Soalan ini
Berikut ialah contoh dari laman web rasmi, yang melaluinya anda boleh memahami fungsi fork() dengan lebih baik
var cp = memerlukan('proses_anak');
var n = cp.fork(__nama nama '/sub.js');
n.on('message', function(m) {
console.log('IBU BAPA mendapat mesej:', m);
});
n.send({ hello: 'world' });
Hasil pelaksanaan coretan kod di atas:
IBU BAPA mendapat mesej: { foo: 'bar' }
KANAK-KANAK mendapat mesej: { hello: 'world' }
Kandungan sub.js adalah seperti berikut:
process.on('message', function(m) {
console.log('KANAK-KANAK mendapat mesej:', m);
});
process.send({ foo: 'bar' });
Dalam proses anak, objek proses mempunyai kaedah send(), dan ia akan menerbitkan objek mesej setiap kali ia menerima mesej
Apa yang sedikit mengelirukan ialah: mesej yang dihantar oleh child.send() diterima oleh kaedah process.on() dan mesej yang dihantar oleh kaedah process.send() diterima oleh child.on() kaedah
Merujuk kepada contoh ini, kami boleh menambah baik perkhidmatan pertama yang menyediakan data Fibonacci supaya setiap permintaan mempunyai proses baharu yang berasingan untuk dikendalikan
var http = memerlukan('http');
var cp = memerlukan('proses_anak');
pelayan var = http.createServer(function(req, res) {
var child = cp.fork(__dirname '/fibonacci-calc.js');//Setiap permintaan menjana proses anak baharu
child.on('message', function(m) {
res.end(m.result 'n');
});
var input = parseInt(req.url.substring(1));
child.send({input : input});
});
server.listen(8000);
fibonacci-calc.js
fungsi fib(n) {
Jika (n < 2) {
kembali 1;
} lain {
Kembalikan fib(n - 2) fib(n - 1);
}
}
process.on('message', function(m) {
Process.send({hasil: fib(m.input)});
});
Selepas memulakan perkhidmatan, lawati http://localhost:8080/9 untuk mengira nilai jujukan Fibonacci 9
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.