Biblioteca C++ header-only para criar programas paralelos por tarefas usando grafos, com suporte a multithreading em CPU e GPUs CUDA.
piscinajs/piscina
Pool de threads Worker para Node.js que executa tarefas intensivas em CPU fora do event loop principal, com filas, cancelamento e estatísticas de execução.
- Estrelas
- 5,226
- Forks
- 177
- Issues abertas
- 7
- Último commit
- há 6 dias
O que é?
Piscina é um pool de threads Worker para Node.js. Ele permite que uma aplicação encaminhe funções síncronas ou assíncronas para um conjunto de threads Worker, executando tarefas limitadas pela CPU em paralelo sem bloquear o event loop principal. Cada worker carrega um handler exportado de um arquivo separado, e o pool retorna o resultado como uma Promise.
O pool cuida dos detalhes operacionais: gerencia o número mínimo e máximo de threads, os tempos limite de inatividade e uma fila de tarefas configurável, com limite de tamanho opcional e eventos de backpressure. As tarefas podem ser canceladas com um AbortSignal, e o pool registra estatísticas de tempo de execução e de espera. É possível definir limites de memória, variáveis de ambiente e prioridades nice de CPU do Linux para os workers.
Piscina oferece suporte a CommonJS, ESM e TypeScript, e requer Node.js 24 ou posterior.
Recursos principais
- 01Encaminha funções handler síncronas ou assíncronas para um pool de threads Worker.
- 02Número mínimo e máximo de threads e tempos limite de inatividade configuráveis.
- 03Cancelamento de tarefas via AbortSignal ou qualquer EventEmitter que emita 'abort'.
- 04Limite opcional para o tamanho da fila, com eventos drain para backpressure.
- 05Estatísticas de tempo de execução e de espera, além de métricas de utilização.
- 06Limites de memória por worker e prioridade nice de CPU do Linux opcional.
Casos de uso
- Tirar tarefas intensivas em CPU, como hashing, processamento de imagens ou parsing, de um servidor web Node.js.
- Limitar a concorrência de tarefas custosas e enfileirar solicitações excedentes com backpressure.
- Executar renderização no servidor ou outros cálculos síncronos sem travar o event loop.
Início rápido
- 1
Crie main.js e worker.js conforme mostrado na seção Example do README
- 2
Execute main.js com Node.js para exibir o resultado
Antes de usar
- O README requer Node.js 24.x ou superior.
- Os metadados do repositório não mostram uma licença clara, embora o README indique MIT.
Tópicos
Perguntas frequentes
- O que é piscina?
- Pool de threads Worker para Node.js que executa tarefas intensivas em CPU fora do event loop principal, com filas, cancelamento e estatísticas de execução. Piscina é um pool de threads Worker para Node.js. Ele permite que uma aplicação encaminhe funções síncronas ou assíncronas para um conjunto de threads Worker, executando tarefas limitadas pela CPU em paralelo sem bloquear o event loop principal. Cada worker carrega um handler exportado de um arquivo separado, e o pool retorna o resultado como uma Promise.
- piscina é gratuito? Qual é a licença?
- piscina é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
- piscina ainda é mantido?
- Manutenção ativa. O último commit de piscina foi em 19 de out. de 2026.
- Para que posso usar piscina?
- Tirar tarefas intensivas em CPU, como hashing, processamento de imagens ou parsing, de um servidor web Node.js. Limitar a concorrência de tarefas custosas e enfileirar solicitações excedentes com backpressure. Executar renderização no servidor ou outros cálculos síncronos sem travar o event loop.
- Como instalar piscina?
- Crie main.js e worker.js conforme mostrado na seção Example do README Execute main.js com Node.js para exibir o resultado
- Onde consigo piscina?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/piscinajs/piscina
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Uma biblioteca Go que torna a concorrência estruturada mais segura e simples, com grupos de espera, pools limitados, streams ordenados e propagação de panics.
Gem Ruby com primitivas de concorrência, como futures, promises, pools de threads, agents, atoms, coleções thread-safe e classes de sincronização.
Uma biblioteca de paralelismo de dados para Rust que transforma iteradores sequenciais em paralelos com uma mudança mínima na API.
Watt é um servidor de aplicações Node.js que executa qualquer app Node.js em worker threads para melhorar o uso da CPU, a escalabilidade e a observabilidade em containers.
Avaliador rápido de expressões em arrays NumPy que calcula expressões como 3*a+4*b em blocos, usando menos memória e vários núcleos.