今回は、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 サイトの他の関連記事を参照してください。