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
- El worker corre un módulo aparte con su propio bucle de eventos.
workerDatapasa la entrada;postMessagedevuelve el resultado.- Úsalo para trabajo de CPU, no para IO, que ya es concurrente.
Palabras clave y builtins usados aquí
constelsefromifimport
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.
Paso 3 de 3 en Crypto y procesos; paso 17 de 18 en Node.js.