Worker Threads en Node.js: cómo delegar trabajo intensivo de CPU sin bloquear el event loop

Node.js tiene un event loop de un solo hilo, lo cual es excelente para trabajo con mucho I/O y pésimo para trabajo intensivo de CPU. En el momento en que empiezas a hacer procesamiento de imágenes, hashing criptográfico o generación de PDF dentro de un request handler, todas las demás solicitudes quedan esperando. Los worker threads resuelven esto, y son más accesibles de lo que la mayoría cree.

El event loop solo puede hacer una cosa a la vez. Una operación de CPU de 200 ms no solo ralentiza una solicitud: retrasa cada solicitud que está en cola detrás de ella. Con poco tráfico esto pasa desapercibido. Bajo carga, es catastrófico.