Biblioteca C++ de solo cabecera para crear programas paralelos mediante grafos de tareas, con soporte para multihilo en CPU y GPU CUDA.
piscinajs/piscina
Un pool de threads Worker para Node.js que ejecuta tareas con uso intensivo de CPU fuera del event loop principal, con colas, cancelación y estadísticas de ejecución.
- Estrellas
- 5,226
- Forks
- 177
- Issues abiertos
- 7
- Último commit
- hace 6 días
¿Qué es?
Piscina es un pool de threads Worker para Node.js. Permite que una aplicación envíe funciones síncronas o asíncronas a un conjunto de threads Worker, para que el trabajo limitado por CPU se ejecute en paralelo sin bloquear el event loop principal. Cada worker carga un handler exportado desde un archivo independiente y el pool devuelve el resultado como una Promise.
El pool se encarga de los detalles operativos: administra el número mínimo y máximo de threads, los tiempos de espera de inactividad y una cola de tareas configurable, con un límite de tamaño opcional y eventos de backpressure. Las tareas se pueden cancelar con un AbortSignal y el pool registra estadísticas de tiempo de ejecución y de espera. Se pueden configurar límites de memoria, variables de entorno y prioridades nice de CPU en Linux para los workers.
Piscina es compatible con CommonJS, ESM y TypeScript, y requiere Node.js 24 o posterior.
Funciones clave
- 01Envía funciones handler síncronas o asíncronas a un pool de threads Worker.
- 02Permite configurar el número mínimo y máximo de threads y los tiempos de espera de inactividad.
- 03Permite cancelar tareas mediante AbortSignal o cualquier EventEmitter que emita 'abort'.
- 04Ofrece un límite de tamaño opcional para la cola, con eventos drain para gestionar el backpressure.
- 05Proporciona estadísticas de tiempo de ejecución y de espera, además de métricas de utilización.
- 06Permite establecer límites de memoria por worker y, opcionalmente, la prioridad nice de CPU en Linux.
Casos de uso
- Delegar tareas con uso intensivo de CPU, como hashing, procesamiento de imágenes o análisis, desde un servidor web de Node.js.
- Limitar la concurrencia de trabajos costosos y poner en cola las solicitudes excedentes con backpressure.
- Ejecutar renderizado del lado del servidor u otros cálculos síncronos sin bloquear el event loop.
Inicio rápido
- 1
Crea main.js y worker.js como se indica en la sección Example del README
- 2
Ejecuta main.js con Node.js para mostrar el resultado
Antes de usarlo
- El README requiere Node.js 24.x o una versión posterior.
- Los metadatos del repositorio no muestran una licencia clara, aunque el README indica MIT.
Temas
Preguntas frecuentes
- ¿Qué es piscina?
- Un pool de threads Worker para Node.js que ejecuta tareas con uso intensivo de CPU fuera del event loop principal, con colas, cancelación y estadísticas de ejecución. Piscina es un pool de threads Worker para Node.js. Permite que una aplicación envíe funciones síncronas o asíncronas a un conjunto de threads Worker, para que el trabajo limitado por CPU se ejecute en paralelo sin bloquear el event loop principal. Cada worker carga un handler exportado desde un archivo independiente y el pool devuelve el resultado como una Promise.
- ¿piscina es gratuito? ¿Qué licencia tiene?
- piscina es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿piscina sigue mantenido?
- Mantenimiento activo. El último commit de piscina fue el 19 oct 2026.
- ¿Para qué puedo usar piscina?
- Delegar tareas con uso intensivo de CPU, como hashing, procesamiento de imágenes o análisis, desde un servidor web de Node.js. Limitar la concurrencia de trabajos costosos y poner en cola las solicitudes excedentes con backpressure. Ejecutar renderizado del lado del servidor u otros cálculos síncronos sin bloquear el event loop.
- ¿Cómo se instala piscina?
- Crea main.js y worker.js como se indica en la sección Example del README Ejecuta main.js con Node.js para mostrar el resultado
- ¿Dónde consigo piscina?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/piscinajs/piscina
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Una biblioteca de Go que hace que la concurrencia estructurada sea más segura y sencilla, con grupos de espera, pools acotados, flujos ordenados y propagación de panics.
Una gema de Ruby con primitivas de concurrencia como futures, promises, pools de hilos, agents, atoms, colecciones thread-safe y clases de sincronización.
Una biblioteca de paralelismo de datos para Rust que convierte iteradores secuenciales en paralelos con cambios mínimos en la API.
Watt es un servidor de aplicaciones Node.js que ejecuta cualquier app de Node.js en worker threads para mejorar el uso de CPU, el escalado y la observabilidad en contenedores.
Evaluador rápido de expresiones sobre arrays de NumPy que calcula expresiones como 3*a+4*b en bloques, con menos memoria y varios núcleos.