
Padrões de concorrência
Worker pools, pipelines, fan-out/fan-in, cancelamento, context, errgroup, semáforos
1O que é um worker pool em Go?
O que é um worker pool em Go?
Resposta
Um worker pool é um padrão de concorrência que usa um número fixo de goroutines (workers) para processar tarefas vindas de um canal compartilhado. Esse padrão permite limitar o número de goroutines ativas e controlar o consumo de recursos do sistema. Diferentemente de criar uma goroutine por tarefa, o worker pool reutiliza um conjunto de workers para processar um grande volume de tarefas de forma eficiente.
2Qual é a principal vantagem de usar um worker pool em vez de criar uma goroutine por tarefa?
Qual é a principal vantagem de usar um worker pool em vez de criar uma goroutine por tarefa?
Resposta
Limitar o número de goroutines ativas permite controlar o consumo de recursos do sistema (memória e CPU) e evitar a sobrecarga. Criar uma goroutine por tarefa pode resultar em milhares ou milhões de goroutines simultâneas, saturando o scheduler e esgotando a memória. O worker pool mantém um número ótimo de workers que processam as tarefas sequencialmente, garantindo desempenho previsível mesmo sob carga alta.
3O que é um pipeline no contexto da concorrência em Go?
O que é um pipeline no contexto da concorrência em Go?
Resposta
Um pipeline é uma série de estágios conectados por canais, onde cada estágio é um grupo de goroutines que executam a mesma função. Cada estágio recebe dados por canais de entrada, realiza um processamento e depois envia os resultados por canais de saída. Esse padrão permite decompor processamentos complexos em estágios simples e reutilizáveis, facilitando a composição e o teste de cada componente de forma independente.
Como fechar corretamente um canal em um worker pool para sinalizar o fim do processamento?
Qual é a diferença entre fan-out e fan-in?
+21 perguntas de entrevista
Outros temas de entrevista Go
Fundamentos de Go
Estruturas de dados em Go
Interfaces em Go
Tratamento de erros
Goroutines básicas
Channels
Go Modules
Servidor HTTP
Cliente HTTP
Codificação JSON
Database/SQL
Pacote context
Testing
Primitivas de sincronização
Frameworks web Go
Design de API REST
gRPC
Reflection
Gerenciamento de memória
Otimização de desempenho
Generics
Go Design Patterns
Microservices
Segurança e autenticação
Docker & Containerization
Kubernetes Basics
Go Avançado
Desenvolvimento de CLI
Domine Go para sua proxima entrevista
Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.
Comece gratis