worker_thread:node.js

https://github.com/yosgspec/bench-langs
こいつで書いたclusterのやつを移植した奴。

https://github.com/yosgspec/bench-langs
こいつで書いたclusterのやつを移植した奴。

  • タグ:
  • タグはありません
"use strict";

const {Worker,isMainThread,workerData,parentPort,threadId}=require("worker_threads");

const cores=4;
var maxsum=5000000000;

if(!isMainThread){
	maxsum=workerData.maxsum;
	var esum=0;
	for(var i=0;i<maxsum;i++){
		esum++;
	}
	parentPort.postMessage(esum);
	process.exit();
}

console.time();
maxsum/=cores;

var sum=0;
(async function(){
	const myWorkers=Array(cores).fill().map(n=>new Promise(resolve=>{
		new Worker(__filename,{workerData:{maxsum: maxsum}})
		.once("message",esum=>{
			sum=sum+esum;
			return resolve();
		});
	}));
	await Promise.all(myWorkers);
	console.log(sum);
	console.timeEnd();
})();