Pause
Reset
User Space (Millions of Goroutines)
Go Runtime (GMP Scheduler)
OS Kernel (Hardware Threads)
SPAWN (go)
SPAWN (go)
EXECUTE
EXECUTE
YIELD
JS CONTEXT 1
Goroutine (2KB)
JS CONTEXT 2
Goroutine (2KB)
JS CONTEXT N
Goroutine (2KB)
GO SCHEDULER
M:N Multiplexer
OS THREAD 1
Heavy (~1-2MB)
OS THREAD 2
Heavy (~1-2MB)