NodeJSの親プロセスと子プロセスのリソース共有原理と実装方法

亚连
リリース: 2018-05-29 17:40:23
オリジナル
1642 人が閲覧しました

この記事では、主に NodeJS の親プロセスと子プロセス間のリソース共有の原理と実装方法を紹介し、親プロセスと子プロセス間のリソース共有を実現するためのクラスター モジュールに基づいた NodeJS の関連操作スキルを例の形で分析します。困っている友達は参考にしてください

この記事では、NodeJS の親プロセスと子プロセス間のリソース共有の原理と実装方法を例を用いて説明します。参考までに皆さんと共有してください。詳細は次のとおりです:

実験目標: 親プロセスと子プロセス間のリソース共有を実現する

使用モジュール: cluster

はじめに: ノードクラスターを構築し、マルチプロセスを実現し、child_processを使用してIPCを実現し、マルチコア使用率を解決し、パフォーマンスを向上させます。

原則:

1 マスター-ワーカー マスター-スレーブ モードのマルチプロセス アーキテクチャ

2 fork() CPU リソース (コアの数によって決まる) を最大限に活用するためにプロセスをコピーする

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(&#39;message&#39;, function(msg) {
      switch (msg) {
        case triggerEvent.inc:
          globalDataSuccess++;
          console.log(&#39;globalDataSuccess = &#39;, globalDataSuccess);
          break;
        case triggerEvent.dec:
          globalDataSuccess--;
          console.log(&#39;globalDataSuccess = &#39;, globalDataSuccess);
          break;
      }
    });
  }
  console.log(&#39;Master globalDataError = &#39;, globalDataError);
} else {
  globalDataError++;
  console.log(&#39;Worker globalDataError = &#39;, globalDataError);
  process.send(triggerEvent.dec);
  process.send(triggerEvent.inc);
}
ログイン後にコピー

上記は私が皆さんのためにまとめたもので、将来皆さんのお役に立てれば幸いです。

関連記事:

vueページ読み込み時のちらつき問題の解決策

jsがModelAndView値を取得する問題についての簡単な説明

vueレンダリング中の{{}}のちらつきの問題と解決策

以上がNodeJSの親プロセスと子プロセスのリソース共有原理と実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート