Programming Languages
Go
Subjective
Oct 04, 2025
What are the common concurrency patterns in Go?
Detailed Explanation
Go Concurrency Patterns:
• Worker Pool: Limit concurrent workers
• Pipeline: Chain processing stages
• Fan-out/Fan-in: Distribute and collect
• Rate Limiting: Control request rate
• Circuit Breaker: Fail fast pattern
• Timeout: Prevent hanging operations
Worker Pool:
func workerPool(jobs <-chan Job, results chan<- Result) {
for j := range jobs {
results <- process(j)
}
}
for w := 1; w <= numWorkers; w++ {
go workerPool(jobs, results)
}
Pipeline:
func pipeline() {
numbers := generate()
squares := square(numbers)
print(squares)
}
Rate Limiting:
rate := time.Second / 10 // 10 requests per second
limiter := time.Tick(rate)
for req := range requests {
<-limiter
go handle(req)
}
Timeout Pattern:
select {
case result := <-ch:
return result
case <-time.After(timeout):
return nil, errors.New("timeout")
}
Discussion (0)
No comments yet. Be the first to share your thoughts!
Share Your Thoughts