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 의 피 보 나치 수열 의 값 을 계산 할 수 있다.
이상 이 바로 본문의 전체 내용 이 니 여러분 들 이 좋아 하 시 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기