
Patrones de concurrencia
Worker pools, pipelines, fan-out/fan-in, cancelación, context, errgroup, semáforos
1¿Qué es un worker pool en Go?
¿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?
¿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?
¿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.
¿Cómo cerrar correctamente un canal en un worker pool para señalar el fin del procesamiento?
¿Cuál es la diferencia entre fan-out y fan-in?
+21 preguntas de entrevista
Otros temas de entrevista Go
Fundamentos de Go
Estructuras de datos en Go
Interfaces en Go
Manejo de errores
Goroutines básicas
Channels
Go Modules
Servidor HTTP
Cliente HTTP
Codificación JSON
Database/SQL
Paquete context
Testing
Primitivas de sincronización
Frameworks web de Go
Diseño de API REST
gRPC
Reflection
Gestión de memoria
Optimización del rendimiento
Generics
Go Design Patterns
Microservices
Seguridad y autenticación
Docker & Containerization
Kubernetes Basics
Go Avanzado
Desarrollo de CLI
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