var http = require('http');
함수 fib (n) {
If (n
1을 반환;
} 그 밖의 {
fib(n - 2) fib(n - 1)을 반환합니다.
}
}
var 서버 = http.createServer(function (req, res) {
var num =parseInt(req.url.substring(1), 10);
res.writeHead(200);
res.end(fib(num) "n");
});
server.listen(8000);
위의 예에서는 피보나치 수열 계산 서비스를 제공합니다. 이 계산은 시간이 많이 걸리고 단일 스레드이므로 동시에 여러 요청이 있는 경우 child_process로 이 문제를 해결할 수 있습니다. 포크() 이 질문
다음은 공식 홈페이지의 예입니다. 이를 통해 fork()의 기능을 더 잘 이해할 수 있습니다
var cp = require('child_process');
var n = cp.fork(__dirname '/sub.js');
n.on('메시지', function(m) {
console.log('PARENT가 메시지를 받았습니다:', m);
});
n.send({ hello: 'world' });
위 코드 스니펫을 실행한 결과:
PARENT님이 메시지를 받았습니다: { foo: 'bar' }
어린이가 메시지를 받았습니다: { hello: 'world' }
sub.js의 내용은 다음과 같습니다.
process.on('메시지', function(m) {
console.log('CHILD가 메시지를 받았습니다:', m);
});
process.send({ foo: 'bar' });
하위 프로세스에서 프로세스 개체에는 send() 메서드가 있으며 메시지를 받을 때마다 메시지 개체를 게시합니다.
조금 혼란스러운 점은 child.send()가 보낸 메시지는 process.on() 메서드가 수신하고, process.send() 메서드가 보낸 메시지는 child.on()이 수신한다는 것입니다. 방법
이 예를 참조하면 각 요청을 처리할 별도의 새로운 프로세스가 있도록 피보나치 데이터를 제공하는 첫 번째 서비스를 개선할 수 있습니다.
var http = require('http');
var cp = require('child_process');
var 서버 = http.createServer(function(req, res) {
var child = cp.fork(__dirname '/fibonacci-calc.js');//각 요청은 새로운 하위 프로세스를 생성합니다
child.on('메시지', function(m) {
res.end(m.result 'n');
});
var 입력 = parsInt(req.url.substring(1));
child.send({입력 : 입력});
});
server.listen(8000);
fibonacci-calc.js
함수 fib(n) {
If (n
1을 반환;
} 그 밖의 {
fib(n - 2) fib(n - 1)을 반환합니다.
}
}
process.on('메시지', function(m) {
Process.send({결과: fib(m.input)});
});
서비스 시작 후 http://localhost:8080/9에 접속하여 피보나치 수열 9의 값을 계산해 보세요
위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.