Node. js 중 child프로 세 스 다 중 프로 세 스 구현
var http = require('http');
function fib (n) {
if (n < 2) {
return 1;
} else {
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) + "
");
});
server.listen(8000);
상기 예시 에서 피 보 나치 수열 의 계산 서 비 스 를 제 공 했 습 니 다. 이 계산 은 상당히 시간 이 걸 리 고 단일 라인 이기 때문에 여러 요청 이 동시에 있 을 때 하나만 처리 할 수 있 습 니 다. childprocess. fork () 에서 이 문 제 를 해결 할 수 있 습 니 다.
홈 페이지 의 예 시 를 참조 하여 이 예 를 통 해 fork () 의 기능 을 잘 이해 할 수 있 습 니 다.
var cp = require('child_process');
var n = cp.fork(__dirname + '/sub.js');
n.on('message', function(m) {
console.log('PARENT got message:', m);
});
n.send({ hello: 'world' });
위 코드 세 션 의 실행 결 과 를 실행 합 니 다:
PARENT got message: { foo: 'bar' }
CHILD got message: { hello: 'world' }
sub. js 의 내용 은 다음 과 같 습 니 다.
process.on('message', function(m) {
console.log('CHILD got message:', m);
});
process.send({ foo: 'bar' });
하위 프로 세 스에 서 process 대상 은 send () 방법 이 있 으 며, 메 시 지 를 받 을 때마다 메시지 대상 을 발표 합 니 다.
약간 어 지 러 운 것 은 child. send () 가 보 낸 메 시 지 는 process. on () 방법 으로 받 았 고 process. send () 방법 으로 보 낸 메 시 지 는 child. on () 방법 으로 받 았 습 니 다.
이 예 를 참조 하면 우 리 는 첫 번 째 피 보 나치 데 이 터 를 제공 하 는 서 비 스 를 개선 하여 모든 요 구 를 새로운 프로 세 스 로 처리 할 수 있 습 니 다.
var http = require('http');
var cp = require('child_process');
var server = http.createServer(function(req, res) {
var child = cp.fork(__dirname + '/fibonacci-calc.js');//
child.on('message', function(m) {
res.end(m.result + '
');
});
var input = parseInt(req.url.substring(1));
child.send({input : input});
});
server.listen(8000);
fibonacci-calc.js
function fib(n) {
if (n < 2) {
return 1;
} else {
return fib(n - 2) + fib(n - 1);
}
}
process.on('message', function(m) {
process.send({result: fib(m.input)});
});
서비스 시작 후 접근http://localhost:8080/99 의 피 보 나치 수열 의 값 을 계산 할 수 있다.
이상 이 바로 본문의 전체 내용 이 니 여러분 들 이 좋아 하 시 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.