コードコピーは次のとおりです。
var http = require( 'http');
関数fib(n){
if(n <2){
返品1;
} それ以外 {
return 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);
上記の例は、フィボナッチシーケンス計算サービスを提供します。この計算は非常に時間がかかり、単一のスレッドであるため、複数のリクエストが同時にある場合に処理できるスレッドは1つだけです。この問題は、child_process.fork()を介して解決できます。
公式ウェブサイトの例を以下に示します。この例は、fork()wellの機能を理解するために使用できます。
コードコピーは次のとおりです。
var cp = require( 'child_process');
var n = cp.fork(__ dirname + '/sub.js');
n.on( 'message'、function(m){
console.log( '親はメッセージ:'、m);
});
n.send({hello: 'world'});
上記のコードスニペットを実行した結果:
コードコピーは次のとおりです。
親はメッセージを受け取った:{foo: 'bar'}
子供はメッセージを手に入れました:{こんにちは:「世界」}
sub.jsの内容は次のとおりです。
コードコピーは次のとおりです。
process.on( 'message'、function(m){
console.log( '子供はメッセージを取得しました:'、m);
});
process.send({foo: 'bar'});
プロセスオブジェクトには、子プロセスにsend()メソッドがあり、メッセージを受信するたびにメッセージオブジェクトを公開します
少しめまいは、child.send()から送信されたメッセージがprocess.on()メソッドによって受信され、process.send()メソッドが送信したメッセージがchild.on()メソッドによって受信されることです。
この例を参照すると、Fibonacciデータを提供する最初のサービスを改善できるため、各リクエストにはそれを処理するための個別の新しいプロセスがあります。
コードコピーは次のとおりです。
var http = require( 'http');
var cp = require( 'child_process');
var server = http.createserver(function(req、res){
var child = cp.fork(__ dirname + '/fibonacci-calc.js');/each要求新しい子プロセスを個別に生成する
child.on( 'message'、function(m){
res.End(M.Result + '/n');
});
var input = parseint(req.url.substring(1));
child.send({入力:入力});
});
server.listen(8000);
fibonacci-calc.js
コードコピーは次のとおりです。
関数fib(n){
if(n <2){
返品1;
} それ以外 {
return fib(n -2) + fib(n -1);
}
}
process.on( 'message'、function(m){
process.send({result:fib(m.input)});
});
サービスを開始した後、http:// localhost:8080/9にアクセスして、9のフィボナッチシーケンスの値を計算します。
上記はこの記事のすべてです。あなたがそれを気に入ってくれることを願っています。