코드 사본은 다음과 같습니다.
var http = 요구 ( 'http');
기능 fib (n) {
if (n <2) {
반환 1;
} 또 다른 {
리턴 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);
위의 예는 Fibonacci 서열 계산 서비스를 제공합니다. 이 계산은 시간이 많이 걸리고 단일 스레드이므로 여러 요청이 동시에 발생하면 하나만 처리 할 수 있습니다. 이 문제는 child_process.fork ()를 통해 해결할 수 있습니다.
다음은 공식 웹 사이트의 예입니다. 이 예제는 포크 ()의 기능을 잘 이해하는 데 사용될 수 있습니다.
코드 사본은 다음과 같습니다.
var cp = 요구 사항 ( 'child_process');
var n = cp.fork (__ dirname + '/sub.js');
n.on ( 'message', function (m) {
console.log ( '부모가있는 메시지 :', m);
});
n.send ({hello : 'world'});
위의 코드 스 니펫을 실행 한 결과 :
코드 사본은 다음과 같습니다.
부모가 메시지를 받았습니다 : {foo : 'bar'}
자녀가 메시지를 받았습니다 : {hello : 'world'}
sub.js의 내용은 다음과 같습니다.
코드 사본은 다음과 같습니다.
process.on ( '메시지', function (m) {
Console.log ( 'Child Got Message :', M);
});
process.send ({foo : 'bar'});
프로세스 객체에는 하위 프로세스에 send () 메소드가 있으며 메시지를받을 때마다 메시지 객체를 게시합니다.
약간 어지러린 것은 child.send ()가 보낸 메시지가 Process.on () 메소드에 의해 수신되며 Process.Send () 메소드가 보낸 메시지는 child.on () 메소드에 의해 수신된다는 것입니다.
이 예를 언급하면 Fibonacci 데이터를 제공하는 첫 번째 서비스를 개선하여 각 요청에 별도의 새 프로세스를 처리 할 수 있습니다.
코드 사본은 다음과 같습니다.
var http = 요구 ( 'http');
var cp = 요구 사항 ( '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 ({input : input});
});
Server.Listen (8000);
fibonacci-calc.js
코드 사본은 다음과 같습니다.
기능 fib (n) {
if (n <2) {
반환 1;
} 또 다른 {
리턴 fib (n -2) + fib (n -1);
}
}
process.on ( '메시지', function (m) {
process.send ({result : fib (m.input)});
});
서비스를 시작한 후 http : // localhost : 8080/9를 방문하여 Fibonacci 시퀀스 9의 값을 계산하십시오.
위의 것은이 기사에 관한 모든 것입니다. 나는 당신이 그것을 좋아하기를 바랍니다.