> 웹 프론트엔드 > JS 튜토리얼 > NodeJS 상위 프로세스와 하위 프로세스 간의 리소스 공유 단계에 대한 자세한 설명

NodeJS 상위 프로세스와 하위 프로세스 간의 리소스 공유 단계에 대한 자세한 설명

php中世界最好的语言
풀어 주다: 2018-05-11 10:07:42
원래의
1666명이 탐색했습니다.

이번에는 NodeJS 상위 프로세스와 하위 프로세스 간의 리소스 공유 단계에 대해 자세히 설명하겠습니다. NodeJS 상위 프로세스와 하위 프로세스 간의 리소스 공유에 대한 주의 사항은 무엇입니까? 살펴보자.

실험 목표: 상위 프로세스와 하위 프로세스 간의 리소스 공유 실현

사용 모듈: cluster

소개: 노드 클러스터, 다중 프로세스 구현, 그리고 child_process를 사용하여 IPC를 구현하려면 멀티코어 활용도를 해결하고 성능을 향상시키세요.

원리: 1 마스터-작업자 마스터-슬레이브 모드 다중 프로세스 아키텍처

2

프로세스를 복사하여 CPU 리소스를 최대한 활용합니다(코어 수에 따라 결정됨)

fork()3 각 프로세스에는 고유한 속성이 있습니다. 자신의 영역, 해당 영역 내에서 작업을 수행하는 경우 리소스는 공유되지 않습니다. 메시지

이벤트

를 듣고 전송하면 메시지 전달이 이루어지며 리소스 공유 효과를 얻을 수 있습니다4 globalDataError는 잘못된 리소스 공유 방법이고 globalDataSuccess는 올바른 리소스 공유 방법입니다.

구현 코드:

var cluster = require('cluster');
var cpus = require('os').cpus();
// 传递的事件名
var triggerEvent = {
    inc: 'inc',
    dec: 'dec'
}
// 错误的数据共享方式
var globalDataError = 0;
if (cluster.isMaster) {
  // 正确的数据共享方式
  var globalDataSuccess = 0;
  globalDataError++;
  // 启动多个进程,取决于内核数
  for (var i = 0; i < cpus.length; i++) {
    var worker = cluster.fork();
    worker.on('message', function(msg) {
      switch (msg) {
        case triggerEvent.inc:
          globalDataSuccess++;
          console.log('globalDataSuccess = ', globalDataSuccess);
          break;
        case triggerEvent.dec:
          globalDataSuccess--;
          console.log('globalDataSuccess = ', globalDataSuccess);
          break;
      }
    });
  }
  console.log('Master globalDataError = ', globalDataError);
} else {
  globalDataError++;
  console.log('Worker globalDataError = ', globalDataError);
  process.send(triggerEvent.dec);
  process.send(triggerEvent.inc);
}
로그인 후 복사
이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

axios는 이미지 양식을 자세히 제출하기 위해 게시물 요청을 보냅니다


axios+post 메소드는 양식 데이터 제출 단계를 자세히 설명합니다

위 내용은 NodeJS 상위 프로세스와 하위 프로세스 간의 리소스 공유 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿