###main.js
let child = require(\'child_process\');
let os = require(\'os\');
let time = 1;
createChild();
function createChild() {
let start = new Date().getTime();
let cpus = os.cpus();
for(let i=0;i<cpus.length;i++){
let child_process = child.fork(\'./zhishu.js\');
child_process.on(\'message\',function (m) {//当子线程send的时候触发此方法
console.log(child_process.pid+\'的时间:\'+m.time+\',质数个数为:\'+m.total);
});
child_process.send({time:i});//给子线程传递参数
}
let end = new Date().getTime();
console.log(\'start server ...\'+(end-start));
}
##child.js
//判断一个数是不是质数
function zhishu_js(num) {
if (num == 1) {
return false;
}
if (num == 2) {
return true;
}
for (var i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
let time = 1;
//测试一共需要多长时间
//test();
function test() {
let total = 0;
let start = new Date().getTime();
for(let i = 1;i<400000;i++){
if(zhishu_js(i)){
total+=1;
}
}
let end = new Date().getTime();
console.log(\'total time =\'+(end - start)+\'total = \'+total);
}
//接受主线程中线程传递进来的参数
process.on(\'message\',function (message) {
let total = 0;
time = message.time*100000;
console.log(\'message:\'+time);
let start = new Date().getTime();
let i = time+100000;
for(time;time<i;time++){
if(zhishu_js(time)){
total++;
}
}
let end = new Date().getTime();
process.send({time:(end-start),total:total});
});