add worker threads prime search solution
Neue Datei |
| | |
| | | // Main Thread
|
| | | const { Worker } = require('worker_threads');
|
| | |
|
| | | const until = 1000000;
|
| | | const threads = 16;
|
| | | const workers = [];
|
| | |
|
| | | const range = Math.floor(until / threads);
|
| | |
|
| | | console.time("primes");
|
| | |
|
| | | for (let i = 0; i < threads; i++) {
|
| | | const workerPromise = new Promise((r) => {
|
| | | const worker = new Worker("./mt-worker", { workerData: {from: i * range, to: (i + 1) * range}});
|
| | |
|
| | | worker.on("message", () => r());
|
| | | })
|
| | |
|
| | | workers.push(workerPromise);
|
| | | }
|
| | |
|
| | | Promise.all(workers).then(() => console.timeEnd("primes"));
|
Neue Datei |
| | |
| | | const { workerData, parentPort } = require('worker_threads');
|
| | |
|
| | | function isPrime(n) {
|
| | | // Corner case
|
| | | if (n <= 1)
|
| | | return false;
|
| | |
|
| | | // Check from 2 to n-1
|
| | | for (let i = 2; i < n; i++)
|
| | | if (n % i == 0)
|
| | | return false;
|
| | |
|
| | | return true;
|
| | | }
|
| | |
|
| | | const primes = [];
|
| | |
|
| | | for (let i = workerData.from; i <= workerData.to; i++) {
|
| | | if (isPrime(i)) {
|
| | | primes.push(i);
|
| | | }
|
| | | }
|