最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nodejs中解決cluster模塊的多進程如何共享數(shù)據(jù)問題

 更新時間:2016年11月10日 08:44:20   作者:黃明恩  
本篇文章主要介紹了Nodejs中解決cluster模塊的多進程如何共享數(shù)據(jù)問題,有需要的可以了解一下。

前述

nodejs在v0.6.x之后增加了一個模塊cluster用于實現(xiàn)多進程,利用child_process模塊來創(chuàng)建和管理進程,增加程序在多核CPU機器上的性能表現(xiàn)。本文將介紹利用cluster模塊創(chuàng)建的多線程如何共享數(shù)據(jù)的問題。

進程間數(shù)據(jù)共享

首先舉個簡單的例子,代碼如下:

var cluster = require('cluster'); 
var data = 0;//這里定義數(shù)據(jù)不會被所有進程共享,各個進程有各自的內(nèi)存區(qū)域 
if (cluster.isMaster) { //主進程 
 var numCPUs = require('os').cpus().length; 
 for (var i = 0; i < numCPUs; i++) { 
  var worker = cluster.fork(); 
 } 
 data++; 
 console.log('DATA VALUE in MainProcess: %d ' , data);
} else { //子進程,會被調(diào)用numCPUs次 
 data++; 
 console.log('DATA VALUE in ChildProcess %d: %d ' cluster.worker.id, data);
}

運行結果如下: 

為什么我們在主進程代碼塊以及子進程代碼塊之外來聲明的變量不應該是全局變量么?答案是否定的。因為每個進程在內(nèi)存都有各自的區(qū)域,因此data++操作是在各自的區(qū)域內(nèi)進行的,也就是說變量data沒被共享。那么怎么來在各進程之間共享數(shù)據(jù)呢?來看下面的代碼:

var cluster = require('cluster'); 
var http = require('http'); 
 
if (cluster.isMaster) { 
 var numCPUs = require('os').cpus().length; 
 var data = 0; 
 // 啟動多個進程. 
 for (var i = 0; i < numCPUs; i++) { 
 //增加一個進程 
 var worker_process = cluster.fork(); 
 //偵聽子進程的message事件 
 worker_process.on('message', function(msg) { 
  if (msg.cmd && msg.cmd == 'notifyRequest') { 
  data++; 
  console.log('DATA VALUE : %d ', data);
  } 
 }); 
 } 
} else { 
 process.send({ cmd: 'notifyRequest' }); 
}

運行結果如下:


因此如果需要共享數(shù)據(jù),需要在進程間使用消息通知來達到這個目的。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Node.jsv16 版本安裝的實現(xiàn)

    Node.jsv16 版本安裝的實現(xiàn)

    本文主要介紹了Node.jsv16 版本安裝的實現(xiàn),文中通過圖文示例介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • node.js中實現(xiàn)雙重身份驗證機制的方法詳解

    node.js中實現(xiàn)雙重身份驗證機制的方法詳解

    雙重身份驗證(Two-factor?authentication)是一種安全機制,它要求用戶提供兩種不同的身份驗證因素來訪問他們的帳戶,下面我們就來學習一下如何使用speakeasy在nodejs中實現(xiàn)雙重身份驗證吧
    2023-10-10
  • Node.js中的require.resolve方法使用簡介

    Node.js中的require.resolve方法使用簡介

    在Node.js中,可以使用require.resolve函數(shù)來查詢某個模塊文件的帶有完整絕對路徑的文件名,下面這篇文章主要介紹了Node.js中require.resolve方法使用的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-04-04
  • Nodejs使用SQL模糊查詢的過程詳解

    Nodejs使用SQL模糊查詢的過程詳解

    最近在改一個比較久的項目,是使用nodejs寫的,但是對于長期寫java的后端開發(fā)來說,還是有點難維護,不過不改bug的話,就需要重新開發(fā),所以本文介紹了NodeJs如何使用SQL模糊查詢,需要的朋友可以參考下
    2024-07-07
  • Node使用Selenium進行前端自動化操作的代碼實現(xiàn)

    Node使用Selenium進行前端自動化操作的代碼實現(xiàn)

    這篇文章主要介紹了Node使用Selenium進行前端自動化操作的代碼實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • gulp加批處理(.bat)實現(xiàn)ng多應用一鍵自動化構建

    gulp加批處理(.bat)實現(xiàn)ng多應用一鍵自動化構建

    這篇文章主要給大家介紹了利用gulp加上批處理(.bat)實現(xiàn)ng多應用一鍵自動化構建的相關資料,文中介紹的很詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • 一文搞懂npm?install?意義

    一文搞懂npm?install?意義

    我們在安裝依賴包的時候,不需要過多的去糾結是使用?-S?還是?-D?呢??隨便安裝到?dependencies?或者?devDependencies?里都行,反正?npm?install的時候,都會安裝dependencies?和?devDependencies依賴,今天通過本文學習npm?install意義,感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • npm鏡像源更改后不生效(附淘寶鏡像源)

    npm鏡像源更改后不生效(附淘寶鏡像源)

    淘寶的NPM鏡像源registry.npm.taobao.org已經(jīng)過期,導致npm?install時出現(xiàn)證書過期錯誤,更換鏡像源至registry.npmmirror.com后,如果仍出現(xiàn)錯誤,可能是項目中的package-lock.json或.npmrc文件鎖定了舊的鏡像源,本文就來介紹一下解決方法,感興趣的可以了解一下
    2024-10-10
  • 使用Node.js創(chuàng)建HTTP服務器并實現(xiàn)公網(wǎng)訪問本地Server的步驟

    使用Node.js創(chuàng)建HTTP服務器并實現(xiàn)公網(wǎng)訪問本地Server的步驟

    Node.js含有一系列內(nèi)置模塊,使得程序可以脫離 Apache HTTP Server 或 IIS,作為獨立服務器運,下面將介紹如何簡單幾步實現(xiàn)遠程公共網(wǎng)絡下訪問windwos node.js的服務端,感興趣的朋友一起看看吧
    2023-11-11
  • Node.js中require的工作原理淺析

    Node.js中require的工作原理淺析

    這篇文章主要介紹了Node.js中require的工作原理淺析,通過分析node.js的源碼得到本文,需要的朋友可以參考下
    2014-06-06

最新評論

罗山县| 喀什市| 彭山县| 沙雅县| 长春市| 定西市| 资溪县| 南召县| 民勤县| 昆明市| 夏津县| 盐亭县| 焦作市| 中阳县| 濮阳市| 辛集市| 钟山县| 镇原县| 洱源县| 汨罗市| 仁布县| 西华县| 边坝县| 弥渡县| 凌源市| 资阳市| 绥江县| 万荣县| 宁波市| 德庆县| 囊谦县| 玉环县| 白山市| 涡阳县| 东乡县| 美姑县| 黔江区| 邓州市| 青铜峡市| 亚东县| 凤山县|