国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

NodeJS父進(jìn)程與子進(jìn)程資源共享原理與實現(xiàn)方法

2024-05-06 15:20:35
字體:
供稿:網(wǎng)友

本文實例講述了NodeJS父進(jìn)程與子進(jìn)程資源共享原理與實現(xiàn)方法。分享給大家供大家參考,具體如下:

實驗?zāi)繕?biāo):實現(xiàn)父進(jìn)程與子進(jìn)程間資源共享

使用模塊:cluster

簡介:建立node集群,實現(xiàn)多進(jìn)程,利用child_process來實現(xiàn)IPC,解決多核利用率,提高性能。

原理:

1 Master-worker主從模式的多進(jìn)程架構(gòu)

2 fork()復(fù)制進(jìn)程,充分利用cpu資源(根據(jù)內(nèi)核數(shù)決定)

3 每個進(jìn)程都有自己的區(qū)域,如果在各自區(qū)域內(nèi)執(zhí)行操作,資源并未共享。通過監(jiān)聽message事件和send實現(xiàn)消息傳遞,達(dá)到資源共享的效果

4  globalDataError為錯誤的資源共享方式, globalDataSuccess為正確的資源共享方式。

實現(xiàn)代碼:

var cluster = require('cluster');var cpus = require('os').cpus();// 傳遞的事件名var triggerEvent = {    inc: 'inc',    dec: 'dec'}// 錯誤的數(shù)據(jù)共享方式var globalDataError = 0;if (cluster.isMaster) {  // 正確的數(shù)據(jù)共享方式  var globalDataSuccess = 0;  globalDataError++;  // 啟動多個進(jìn)程,取決于內(nèi)核數(shù)  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);}

希望本文所述對大家nodejs程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 沙河市| 兴海县| 五大连池市| 永仁县| 石河子市| 措美县| 临洮县| 吴忠市| 固原市| 阿坝县| 丹棱县| 乐昌市| 婺源县| 新巴尔虎左旗| 全州县| 宜城市| 南皮县| 九龙县| 岢岚县| 天峻县| 海淀区| 湘乡市| 南平市| 麻江县| 措勤县| 霍城县| 锡林浩特市| 扎兰屯市| 开阳县| 囊谦县| 广德县| 梨树县| 嘉荫县| 木兰县| 福鼎市| 石渠县| 临湘市| 临沂市| 祥云县| 龙门县| 萨嘎县|