Repolode
sourcegraph

sourcegraph/conc

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.

Estrellas
10,435
Forks
366
Issues abiertos
33
Último commit
hace 2 meses

¿Qué es?

conc es un paquete de Go que reúne patrones de concurrencia habituales en una API con ámbitos definidos y más fácil de leer. Cada goroutine pertenece a un conc.WaitGroup, así que quien la inicia es responsable de esperar a que termine, en lugar de dejarla ejecutándose sin supervisión.

El paquete gestiona los panics en las goroutines iniciadas: los captura y los vuelve a lanzar en la goroutine que llama a Wait(), adjuntando el stack trace de la goroutine hija. Esto evita el código repetitivo para recuperar y reenviar panics que exige una instrucción go normal.

Además del grupo de espera, conc ofrece pools de workers acotados, pools que recopilan resultados o errores, pools que cancelan el contexto, un procesador de flujos ordenados y funciones auxiliares concurrentes Map y ForEach para slices.

Funciones clave

  • 01WaitGroup que administra las goroutines iniciadas y espera a que terminen.
  • 02Los panics en las goroutines hijas se vuelven a lanzar al llamar a Wait(), con el stack trace de la goroutine hija.
  • 03Pools de goroutines acotados, configurados con WithMaxGoroutines.
  • 04Pools que recopilan resultados o errores, con cancelación opcional del contexto ante el primer error.
  • 05Procesamiento de flujos ordenados con tareas paralelas y callbacks secuenciales.
  • 06iter.Map e iter.ForEach concurrentes sobre slices.

Casos de uso

  • Sustituir sync.WaitGroup en servicios donde un panic en una goroutine no debería pasar inadvertido ni hacer que el proceso se bloquee.
  • Ejecutar un conjunto de tareas con un límite máximo fijo de goroutines concurrentes.
  • Aplicar un mapeo o iterar sobre un slice de forma concurrente sin escribir bucles de workers a mano.
  • Procesar un flujo ordenado en paralelo y conservar el orden de salida.

Inicio rápido

  1. 1

    Añade la biblioteca a tu módulo de Go

    go get github.com/sourcegraph/conc

Antes de usarlo

  • Según el README, el paquete aún está en una versión anterior a la 1.0 y puede incluir cambios menores que rompan la compatibilidad antes de llegar a la 1.0.

Temas

Preguntas frecuentes

¿Qué es conc?
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. conc es un paquete de Go que reúne patrones de concurrencia habituales en una API con ámbitos definidos y más fácil de leer. Cada goroutine pertenece a un conc.WaitGroup, así que quien la inicia es responsable de esperar a que termine, en lugar de dejarla ejecutándose sin supervisión.
¿conc es gratuito? ¿Qué licencia tiene?
conc es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿conc sigue mantenido?
Actualizado en los últimos 6 meses. El último commit de conc fue el 1 sept 2026.
¿Para qué puedo usar conc?
Sustituir sync.WaitGroup en servicios donde un panic en una goroutine no debería pasar inadvertido ni hacer que el proceso se bloquee. Ejecutar un conjunto de tareas con un límite máximo fijo de goroutines concurrentes. Aplicar un mapeo o iterar sobre un slice de forma concurrente sin escribir bucles de workers a mano. Procesar un flujo ordenado en paralelo y conservar el orden de salida.
¿Cómo se instala conc?
Añade la biblioteca a tu módulo de Go: go get github.com/sourcegraph/conc
¿Dónde consigo conc?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/sourcegraph/conc

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados