This course delves into the core concepts of Go concurrency. It covers synchronization mechanisms, including atomic operations and mutexes. Students will learn about the Go Memory Model, inter-goroutine communication using condition variables, lock-free programming with atomic variables, and how to avoid common concurrency issues like deadlocks and race conditions.
Overview
Syllabus
- Unit 1: Go Atomic Synchronization
- Atomic Counter in Go: Implement incrementBy
- Fix Atomic Counter in Go with Goroutines
- Atomic Counter with sync/atomic in Go
- Synchronized Awards Counter with sync/atomic
- Atomic Song Play Counter with sync/atomic
- Unit 2: Go Condition Variables
- Waiting for Two Conditions with sync.Cond in Go
- Switch to sync.Cond.Signal to Wake One Goroutine at a Time
- Fix the Condition Variable Wait Logic in Go
- Goroutines Wait for Mission with sync.Cond
- Mission Launch Synchronization with sync.Cond
- Synchronize Goroutines with sync.Cond
- Unit 3: Avoiding Go Deadlocks
- Fix Deadlock by Acquiring Mutexes in a Consistent Order
- Fix Deadlock with Consistent Mutex Ordering in Go
- Avoid Deadlocks with Consistent Mutex Ordering in Go
- Avoid Deadlocks with Consistent Lock Ordering and Defer
- Prevent Deadlocks with Consistent Mutex Ordering in Go
- Unit 4: Go CAS Operations
- Update CAS Counter to Add Two
- Fix the CAS Bug in a Lock-Free Go Counter
- CAS-Based Lock-Free Superhero Strength Counter in Go
- Lock-Free SuperPower Counter Using CAS in Go
- Lock-Free Complex Counter with CAS in Go