IPC — communication between processes.
1const { fork } = require("child_process");23// Parent process4const child = fork("./worker.js");56// Send task to child7child.send({ type: "process", data: { input: "hello" } });89// Receive result10child.on("message", (msg) => {11 console.log("Result:", msg);12});1314// Error handling15child.on("error", (err) => console.error("Worker error:", err));16child.on("exit", (code) => console.log("Worker exited:", code));1718// worker.js19process.on("message", (msg) => {20 if (msg.type === "process") {21 const result = heavyComputation(msg.data.input);22 process.send({ type: "result", data: result });23 }24});
SharedArrayBuffer (shared memory):
1const { Worker, isMainThread, parentPort, workerData } = require("worker_threads");23if (isMainThread) {4 const shared = new SharedArrayBuffer(1024);5 const arr = new Int32Array(shared);6 arr[0] = 42;78 const worker = new Worker(__filename, { workerData: shared });9 worker.on("message", () => console.log(arr[0])); // 10010} else {11 const arr = new Int32Array(workerData);12 arr[0] = 100;13 parentPort.postMessage("done");14}