Various patterns and dabble in Golang.
Pattern | Description | Source |
---|---|---|
Confinement | Safe concurrent access without channels or mutex | Concurrency in Go |
For Select | Common idiom when dealing with selection on multiple channels | Concurrency in Go |
Error Handling | Separate the concerns of error handling from a producer goroutine | Concurrency in Go |
Goroutine leaks | You create a goroutine, you better ensure to stop it | Concurrency in Go |
Channel Patterns | Patterns to multiplex multiple channels | Concurrency in Go |
Semaphore Worker Pool | Restrict number of worker in the pool using semaphore | Ultimate Go Programming |
Pipelines | Using channel to create pipelined stages | Concurrency in Go |
Generators | Using channels to create memory efficient generators for pipelined stages | Concurrency in Go |
Fan In/Out | Fanning pipeline stages in/out for performance and efficiency | Concurrency in Go |
Error Propagation | Using wrapped high level errors to propagate errors | Concurrency in Go |
Heartbeats | A way to signal health in concurrent life for waiting parties | Concurrency in Go |
Replicated requests | A fault tolerant but expensive way to service requests faster | Concurrency in Go |
Rate limiter | Constrain access to resource for a finite period for resiliency | Concurrency in Go |
Healing Goroutines | Mechanism to restart or supervise long running goroutines | Concurrency in Go |