typestar

Hilos worker en JavaScript

Paralelismo real para trabajo de CPU, con mensajes entre los hilos.

import { Worker, isMainThread, parentPort, workerData }
  from "node:worker_threads";

const source = `
  import { parentPort, workerData } from "node:worker_threads";
  let total = 0;
  for (let i = 1; i <= workerData.limit; i += 1) total += i;
  parentPort.postMessage(total);
`;

if (isMainThread) {
  const worker = new Worker(new URL(`data:text/javascript,${source}`), {
    workerData: { limit: 1000 },
  });
  worker.on("message", (total) => console.log("worker said", total));
  worker.on("error", (error) => console.log("worker failed", error.message));
} else {
  parentPort.postMessage(workerData);
}

Cómo funciona

  1. El worker corre un módulo aparte con su propio bucle de eventos.
  2. workerData pasa la entrada; postMessage devuelve el resultado.
  3. Úsalo para trabajo de CPU, no para IO, que ya es concurrente.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
587
Tokens
110
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 60 segundos.

Escribe este fragmento

Paso 3 de 3 en Crypto y procesos; paso 17 de 18 en Node.js.

← Anterior Siguiente →