Go Concurrency [2/2]: Work Stealing, the Netpoller, and Async Preemption

Part 2 of 2 : this post builds on the GMP model from Part 1. The GMP model explains the structure of Go’s scheduler. This post explains how it stays efficient under real-world load. Three mechanisms that run silently behind every Go program: Work stealing – balances uneven workloads across processors The Netpoller – handles network I/O without blocking OS threads Async preemption – stops CPU-heavy goroutines from starving others Once you understand these three, the scheduler stops feeling magical and starts feeling inevitable. ...

May 23, 2026

Go Concurrency [1/2]: The Anatomy of GMP

Part 1 of 2: Go Concurrency internals, from the scheduler up. If you’re coming from Java or C++, you’ve likely been taught that Threads are the fundamental unit of concurrency. But in Go, we have Goroutines. To understand why Go can comfortably juggle millions of goroutines while traditional apps sweat at 5,000, we have to look at the GMP Model – the secret “Kitchen” architecture of the Go runtime The Trinity: G, M, and P The Go scheduler manages three distinct entities to keep your CPU cores humming: ...

May 18, 2026