A cópia do código é a seguinte:
var http = requer ('http');
função fib (n) {
if (n <2) {
retornar 1;
} outro {
retornar fib (n - 2) + fib (n - 1);
}
}
var server = http.createServer (function (req, res) {
var num = parseint (req.url.substring (1), 10);
Res.Writehead (200);
res. end (fib (num) + "/n");
});
Server.Listen (8000);
O exemplo acima fornece um serviço de cálculo de sequência de Fibonacci. Como esse cálculo é bastante demorado e é um único thread, apenas um pode ser processado quando houver várias solicitações ao mesmo tempo. Este problema pode ser resolvido através de Child_process.fork ().
Aqui está um exemplo no site oficial. Este exemplo pode ser usado para entender bem a função do Fork ().
A cópia do código é a seguinte:
var cp = requer ('child_process');
var n = cp.fork (__ dirname + '/sub.js');
n.on ('mensagem', função (m) {
console.log ('pai recebeu mensagem:', m);
});
n.send ({hello: 'World'});
O resultado da execução do trecho de código acima:
A cópia do código é a seguinte:
Pai recebeu mensagem: {foo: 'bar'}
Criança recebeu mensagem: {hello: 'World'}
O conteúdo do sub.js é o seguinte:
A cópia do código é a seguinte:
process.on ('mensagem', função (m) {
console.log ('criança recebeu mensagem:', m);
});
process.send ({foo: 'bar'});
O objeto de processo possui um método send () no processo filho e publicará o objeto de mensagem toda vez que recebe uma mensagem
O que é um pouco tonto é que a mensagem enviada por Child.send () é recebida pelo método Process.On () e a mensagem enviada pelo método process.send () é recebida pelo método Child.on ().
Referindo -se a este exemplo, podemos melhorar o primeiro serviço que fornece dados de Fibonacci, para que cada solicitação tenha um novo processo separado para processar.
A cópia do código é a seguinte:
var http = requer ('http');
var cp = requer ('child_process');
var server = http.createServer (function (req, res) {
var criança = cp.fork (__ Dirname + '/fibonacci-calc.js';
Child.on ('mensagem', função (m) {
res. end (M.Result + '/n');
});
var input = parseint (req.url.substring (1));
Child.send ({input: input});
});
Server.Listen (8000);
Fibonacci-calc.js
A cópia do código é a seguinte:
função fib (n) {
if (n <2) {
retornar 1;
} outro {
retornar fib (n - 2) + fib (n - 1);
}
}
process.on ('mensagem', função (m) {
process.send ({resultado: fib (m.input)});
});
Depois de iniciar o serviço, visite http: // localhost: 8080/9 para calcular o valor da sequência de Fibonacci de 9.
O exposto acima é tudo sobre este artigo, espero que gostem.