Go Scheduler and Memory Model

G/M/P Model

Work Stealing

Goroutine Stack Copying

Blocking Syscall

  • M detached, new M spawned

Go Memory Model

  • go.dev/ref/mem
  • happens-before guarantees

Escape Analysis

  • go build -gcflags=’-m’