var http = require('http');
fonction fib (n) {
Si (n < 2) {
Retour 1 ;
} autre {
Retourner fib(n - 2) fib(n - 1);
>
>
var serveur = http.createServer (fonction (req, res) {
var num = parseInt(req.url.substring(1), 10);
res.writeHead(200);
res.end(fib(num) "n");
});
serveur.écouter(8000);
L'exemple ci-dessus fournit un service de calcul de séquence de Fibonacci. Étant donné que ce calcul prend beaucoup de temps et est monothread, lorsqu'il y a plusieurs requêtes en même temps, une seule peut être traitée par child_process. fork() Cette question
Voici un exemple tiré du site officiel, grâce auquel vous pourrez mieux comprendre la fonction de fork()
var cp = require('child_process');
var n = cp.fork(__dirname '/sub.js');
n.on('message', fonction(m) {
console.log('PARENT a reçu un message :', m);
});
n.send({ bonjour : 'monde' });
Le résultat de l'exécution de l'extrait de code ci-dessus :
PARENT a reçu un message : { foo: 'bar' }
L'ENFANT a reçu un message : { bonjour : 'monde' }
Le contenu de sub.js est le suivant :
process.on('message', function(m) {
console.log('ENFANT a reçu un message :', m);
});
process.send({ foo: 'bar' });
Dans le processus enfant, l'objet processus a une méthode send(), et il publiera un objet message à chaque fois qu'il recevra un message
Ce qui est un peu déroutant, c'est que le message envoyé par child.send() est reçu par la méthode process.on(), et le message envoyé par la méthode process.send() est reçu par child.on(). méthode
En nous référant à cet exemple, nous pouvons améliorer le premier service qui fournit des données de Fibonacci afin que chaque requête ait un nouveau processus distinct à gérer
var http = require('http');
var cp = require('child_process');
var serveur = http.createServer(function(req, res) {
var child = cp.fork(__dirname '/fibonacci-calc.js');//Chaque requête génère un nouveau processus enfant
enfant.on('message', fonction(m) {
res.end(m.result 'n');
});
var input = parseInt(req.url.substring(1));
enfant.send({input : input});
});
serveur.écouter(8000);
fibonacci-calc.js
fonction fib(n) {
Si (n < 2) {
Retour 1 ;
} autre {
Retourner fib(n - 2) fib(n - 1);
>
>
process.on('message', function(m) {
Process.send({result: fib(m.input)});
});
Après avoir démarré le service, visitez http://localhost:8080/9 pour calculer la valeur de la séquence de Fibonacci de 9
Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.