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

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

php中世界最好的语言
リリース: 2018-05-11 10:07:42
オリジナル
1724 人が閲覧しました

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

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

使用モジュール: cluster

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

原則:

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

2

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

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

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

の効果が得られます。 globalDataError は間違ったリソース共有方法であり、globalDataSuccess は正しいリソース共有方法です。

実装コード:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート