-
Notifications
You must be signed in to change notification settings - Fork 52
Expand file tree
/
Copy pathmain.js
More file actions
41 lines (28 loc) · 851 Bytes
/
main.js
File metadata and controls
41 lines (28 loc) · 851 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
'use strict';
const os = require('node:os');
const cp = require('node:child_process');
console.log('Started primary:', process.pid);
const cpuCount = os.cpus().length;
const workers = [];
for (let i = 0; i < cpuCount; i++) {
const worker = cp.fork('./worker.js');
console.log('Started worker:', worker.pid);
workers.push(worker);
}
const task = [2, 17, 3, 2, 5, 7, 15, 22, 1, 14, 15, 9, 0, 11];
const results = [];
workers.forEach((worker) => {
worker.send({ task });
worker.on('exit', (code) => {
console.log('Worker exited:', worker.pid, code);
});
worker.on('message', (message) => {
console.log('Message from worker', worker.pid);
console.log(message);
results.push(message.result);
if (results.length === cpuCount) {
process.exit(0);
}
});
setTimeout(() => process.exit(1), 5000);
});