この記事では、主に 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('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); }
上記は私が皆さんのためにまとめたもので、将来皆さんのお役に立てれば幸いです。
関連記事:
jsがModelAndView値を取得する問題についての簡単な説明
以上がNodeJSの親プロセスと子プロセスのリソース共有原理と実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。