Repolode
sourcegraph

sourcegraph/conc

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.

Estrelas
10,435
Forks
366
Issues abertas
33
Último commit
há 2 meses

O que é?

conc é um pacote Go que reúne padrões comuns de concorrência em uma API com escopo definido e mais fácil de ler. Cada goroutine é controlada por um conc.WaitGroup, então cabe a quem a controla aguardar sua conclusão, em vez de deixá-la rodando sem supervisão.

O pacote trata panics em goroutines criadas por ele: captura o panic e o relança na goroutine que chama Wait(), anexando o stack trace da goroutine filha. Assim, não é preciso escrever o código repetitivo de recover e encaminhamento exigido por uma instrução go simples.

Além do grupo de espera, conc oferece pools de workers com limite, pools que coletam resultados ou erros, pools que cancelam o contexto, um processador de streams ordenados e funções auxiliares concorrentes Map e ForEach para slices.

Recursos principais

  • 01WaitGroup que controla as goroutines criadas e aguarda sua conclusão.
  • 02Panics em goroutines filhas são relançados em Wait(), junto com o stack trace da goroutine filha.
  • 03Pools de goroutines com limite, configurados com WithMaxGoroutines.
  • 04Pools que coletam resultados ou erros, com opção de cancelar o contexto no primeiro erro.
  • 05Processamento ordenado de streams com tarefas paralelas e callbacks sequenciais.
  • 06iter.Map e iter.ForEach concorrentes para percorrer slices.

Casos de uso

  • Substituir sync.WaitGroup em serviços nos quais um panic em uma goroutine não deve passar despercebido e derrubar o processo.
  • Executar um conjunto de tarefas com um limite máximo definido de goroutines simultâneas.
  • Mapear ou percorrer uma slice de forma concorrente, sem escrever loops de workers manualmente.
  • Processar um stream ordenado em paralelo, preservando a ordem da saída.

Início rápido

  1. 1

    Adicione a biblioteca ao seu módulo Go

    go get github.com/sourcegraph/conc

Antes de usar

  • Segundo o README, o pacote ainda está antes da versão 1.0 e pode passar por pequenas mudanças incompatíveis antes de chegar à 1.0.

Tópicos

Perguntas frequentes

O que é conc?
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. conc é um pacote Go que reúne padrões comuns de concorrência em uma API com escopo definido e mais fácil de ler. Cada goroutine é controlada por um conc.WaitGroup, então cabe a quem a controla aguardar sua conclusão, em vez de deixá-la rodando sem supervisão.
conc é gratuito? Qual é a licença?
conc é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
conc ainda é mantido?
Atualizado nos últimos 6 meses. O último commit de conc foi em 1 de set. de 2026.
Para que posso usar conc?
Substituir sync.WaitGroup em serviços nos quais um panic em uma goroutine não deve passar despercebido e derrubar o processo. Executar um conjunto de tarefas com um limite máximo definido de goroutines simultâneas. Mapear ou percorrer uma slice de forma concorrente, sem escrever loops de workers manualmente. Processar um stream ordenado em paralelo, preservando a ordem da saída.
Como instalar conc?
Adicione a biblioteca ao seu módulo Go: go get github.com/sourcegraph/conc
Onde consigo conc?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/sourcegraph/conc

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados