Go

Patrones de concurrencia

Worker pools, pipelines, fan-out/fan-in, cancelación, context, errgroup, semáforos

24 preguntas de entrevista·
Mid-Level
1

¿Qué es un worker pool en Go?

Respuesta

Un worker pool es un patrón de concurrencia que utiliza un número fijo de goroutines (workers) para procesar tareas provenientes de un canal compartido. Este patrón permite limitar el número de goroutines activas y controlar el consumo de recursos del sistema. A diferencia de crear una goroutine por tarea, el worker pool reutiliza un conjunto de workers para procesar un gran volumen de tareas de manera eficiente.

2

¿Cuál es la principal ventaja de usar un worker pool en lugar de crear una goroutine por tarea?

Respuesta

Limitar el número de goroutines activas permite controlar el consumo de recursos del sistema (memoria y CPU) y evitar la sobrecarga. Crear una goroutine por tarea puede generar miles o millones de goroutines simultáneas, saturando el scheduler y agotando la memoria. El worker pool mantiene un número óptimo de workers que procesan las tareas secuencialmente, garantizando un rendimiento predecible incluso bajo carga alta.

3

¿Qué es un pipeline en el contexto de la concurrencia en Go?

Respuesta

Un pipeline es una serie de etapas conectadas por canales, donde cada etapa es un grupo de goroutines que ejecutan la misma función. Cada etapa recibe datos a través de canales de entrada, realiza un procesamiento y luego envía los resultados a través de canales de salida. Este patrón permite descomponer procesamientos complejos en etapas simples y reutilizables, facilitando la composición y la prueba de cada componente de forma independiente.

4

¿Cómo cerrar correctamente un canal en un worker pool para señalar el fin del procesamiento?

5

¿Cuál es la diferencia entre fan-out y fan-in?

+21 preguntas de entrevista

Domina Go para tu próxima entrevista

Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.

Empieza gratis