2017-04-13 82 views
0

我有CPU 4个内核,我有一些像这样的代码:如何使用Nodejs多CPU核心进行多进程?

setInterval(function() { 
    Player.RunUpdate(); 
    Animal.RunUpdate(); 
    Bullet.RunUpdate(); 
    GameItems.RunUpdate(); 
}, 1E3/FPS); 

随着每.RunUpdate()是循环这样的:

for(var id in player_list){ 
    //check something and update postion 
} 

如何我可以用一个核心的一个.RunUpdate()?可能吗?例如:

setInterval(function() { 
    core_1{ 
    Player.RunUpdate(); 
    } 
    core_2{ 
    Animal.RunUpdate(); 
    } 
    core_3{ 
    Bullet.RunUpdate(); 
    } 
    core_4{ 
    GameItems.RunUpdate(); 
}, 1E3/FPS); 

感谢您的阅读!

+0

集群模块! – Sikorski

回答

0

您可以使用集群npm,因此它将使用所有cpu核心。

使用集群,将创建联合工人

参考代码click here

0

正如我可以理解,你要使用的CPU核心,我会建议你运行下面的代码。

将其另存为server.js,然后使用节点命令(如“node server.js”)运行它。

在下面的代码中,假设你的CPU有4个核心然后这个代码将创建4个线程(由于你的CPU有4个核心线,所以这行代码为require('os').cpus().length)。

这使得您的程序执行速度提高了4倍。现在你可以假设你可以相应地使用你的CPU核心。

var http = require('http'); 
var cluster = require('cluster'); 
var numCPU = require('os').cpus().length; 

if (cluster.isMaster) { 
    console.log(`Master ${process.pid} is running`); 

    for (let i = 0; i < numCPU; i++) { 
     console.log('' + i + '.' + cluster.fork()); 
    } 

    cluster.on('exit', (worker, code, signal) => { 
     console.log(`Worker ${worker.process.pid} died.`); 
    }); 

} else { 
    http.createServer((req, res) => { 
     res.writeHead(200, { 'content-type': 'plain/text' }); 
     res.end('Hello cluster'); 
    }).listen(8000,() => { 
     console.log('server is running on 8000'); 
    }); 
    console.log(`Worker ${process.pid} started`);