go-concurrency-patterns
Domine os Padrões de Concorrência em Go
Também disponível em: wshobson
Construa aplicações concorrentes em Go com confiança. Aprenda padrões prontos para produção para goroutines, channels, worker pools e encerramento gracioso para evitar condições de corrida e vazamentos de recursos.
Baixar o ZIP da skill
Upload no Claude
Vá em Configurações → Capacidades → Skills → Upload skill
Ative e comece a usar
Testar
A utilizar "go-concurrency-patterns". Crie um worker pool com 3 workers que processa jobs de um channel
Resultado esperado:
Aqui está uma implementação de worker pool com 3 workers que processa jobs concorrentemente e coleta resultados através de um channel de resultados com sincronização adequada usando sync.WaitGroup.
A utilizar "go-concurrency-patterns". Mostre-me como usar errgroup para requisições HTTP concorrentes
Resultado esperado:
Este exemplo demonstra golang.org/x/sync/errgroup para buscar múltiplas URLs concorrentemente onde o primeiro erro cancela todas as requisições pendentes através de propagação de contexto.
A utilizar "go-concurrency-patterns". Implemente um semáforo para limitar operações concorrentes
Resultado esperado:
Forneço duas abordagens de semáforo: usando golang.org/x/sync/semaphore.Weighted para semáforos ponderados e um semáforo baseado em channel struct{} para rate limiting simples.
Auditoria de Segurança
SeguroAll 44 static analysis findings are false positives from markdown-enclosed Go code examples. The skill contains legitimate educational content about Go concurrency patterns with no executable code or security risks.
Pontuação de qualidade
O Que Você Pode Construir
Construir microsserviços concorrentes
Crie serviços Go escaláveis com worker pools que lidam com múltiplas requisições concorrentemente enquanto gerenciam recursos de forma eficiente
Implementar pipelines de processamento de dados
Projete pipelines fan-out/fan-in para processar grandes conjuntos de dados em paralelo com tratamento de erros e cancelamento adequados
Depurar condições de corrida
Identifique e corrija bugs de concorrência em código Go existente usando padrões de sincronização adequados e ferramentas de detecção de race conditions
Tente Estes Prompts
Mostre-me como criar um worker pool em Go que processa 100 jobs com 5 workers concorrentes
Escreva um servidor Go com encerramento gracioso que lida com sinais SIGTERM e aguarda as requisições em andamento serem concluídas
Crie um pipeline fan-out/fan-in em Go que processa itens através de 3 estágios com 5 workers por estágio
Revise este código Go e identifique potenciais vazamentos de goroutine, depois mostre-me como corrigi-los usando cancelamento de contexto
Melhores Práticas
- Sempre use context.Context para cancelamento e deadlines em operações concorrentes
- Feche channels apenas do lado do remetente para evitar panics
- Prefira channels sobre mutexes para comunicação entre goroutines
- Use sync.WaitGroup ou errgroup para aguardar a conclusão de goroutines
Evitar
- Usar time.Sleep para sincronização ao invés de primitivas adequadas como channels ou WaitGroup
- Fechar channels do lado do receptor, o que causa panic
- Esquecer de verificar ctx.Done() o que leva a vazamentos de goroutine
- Compartilhar memória entre goroutines sem sincronização adequada
Perguntas Frequentes
Qual é a diferença entre programação concorrente e paralela em Go?
Quando devo usar channels versus mutexes?
Como prevenir vazamentos de goroutine?
Qual é o propósito do sync.WaitGroup?
Como detectar race conditions no meu código Go?
Qual é a diferença entre channels bufferizados e não-bufferizados?
Detalhes do Desenvolvedor
Autor
sickn33Licença
MIT
Repositório
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/go-concurrency-patternsReferência
main
Estrutura de arquivos