NOTE
Goroutine Pools
Bounded concurrency, worker pools, queues, backpressure, and when a goroutine pool is unnecessary.
This is a historical learning note and may contain outdated or incomplete understanding.
Because goroutines are relatively cheap, a pool is usually needed for concurrency control, not simply to avoid creating goroutines. A worker pool caps simultaneous work against CPU, memory, connections, APIs, or downstream capacity.
Use bounded queues or semaphores, propagate cancellation/deadlines, and define overload behavior. An unbounded task queue defeats the capacity protection. For many request-scoped tasks, starting a goroutine directly is simpler when no explicit concurrency limit is required.