ホームページ  >  記事  >  ウェブフロントエンド  >  NodeJSの親プロセスと子プロセス間のリソース共有手順の詳細な説明

NodeJSの親プロセスと子プロセス間のリソース共有手順の詳細な説明

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-11 10:07:421569ブラウズ

今回は、NodeJS の親プロセスと子プロセスの間でリソースを共有する手順について詳しく説明します。NodeJS の親プロセスと子プロセスの間でリソースを共有する場合の 注意事項 は何ですか?見てみましょう。

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

使用モジュール: cluster

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

原則:

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

2

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

3 各プロセスには、独自の領域、それぞれの領域内で操作が実行される場合、リソースは共有されません。メッセージ

イベントをリッスンして送信することで、メッセージ配信が実現され、リソース共有

の効果が得られます。 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 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

axios は、画像フォームを送信するための投稿リクエストを送信します

axios+post メソッドは、フォームデータを送信する手順を詳しく説明します

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。