Go – parallel programming (GO4)
Programming, Rust
Master Go's concurrency model and use its lightweight scheduling to write scalable parallel programs. Learn how goroutines run as cheap concurrent units, how channels safely pass data, and how the Go scheduler enables efficient parallelism across CPUs.
Practice writing concurrent programs with goroutines and message passing via channels. Use context.Context for cancellations and deadlines, apply sync primitives and patterns like worker pools and pipelines to build robust, hardware-efficient services.
Location, current course term
Contact us
The course:
Hide detail
-
Go concurrency model
-
Goroutines and the scheduler: lightweight threads, GOMAXPROCS
-
Channels: unbuffered vs buffered, data ownership and back-pressure
-
select, timeouts, context.Context (cancel, deadline, values)
-
Synchronization primitives
-
sync.WaitGroup, sync.Mutex/RWMutex, sync.Cond, sync.Map, sync.Pool
-
Atomic operations (sync/atomic), memory model — practical exercises
-
Patterns and architecture
-
Worker pool, pipeline, fan-in/fan-out, throttle
-
Idempotence, retries, dead-letter handling, graceful shutdown
-
Concurrent I/O and HTTP services
-
Per-request context, deadline/cancellation, rate limiting
-
Robust server practices: shutdown, health checks, readiness
-
Testing and debugging concurrency
-
race detector, more deterministic tests, time-based flakiness
-
Goroutine profiling, contention hotspots, execution trace analysis
-
Assumed knowledge:
-
Basic proficiency in Go programming.
-
Recommended previous course:
-
Go – Generic Programming (GO3)
-
Recommended subsequent course:
-
Go – Design Patterns (GO5)
-
Schedule:
-
3 days (9:00 AM - 5:00 PM )
-
Language:
-