Конкурентность в Go

Продолжение goroutines и channels из Go-трека: worker pool, fan-in/fan-out, errgroup, гонки и graceful shutdown

Уровень: Средний · около 3 ч · после курса: Соберёшь worker pool и pipeline, поймаешь гонку через -race и остановишь сервис без потерь

Чему научишься

  • Применить goroutine + channel
  • Реализовать worker pool
  • Использовать errgroup для параллельных задач
  • Реализовать graceful shutdown
  • Избегать data race (понимать -race детектор)
  • Применить контексты для cancellation

Уроки курса (6)

Модуль 1 · Горутины, каналы, sync

Планировщик GMP, каналы и мьютексы

  1. Горутины под капотом: планировщик и GMP - Как Go runtime управляет горутинами, модель GMP, stack growth, утечки горутин
  2. Каналы: паттерны и подводные камни - Buffered vs unbuffered, directional channels, select, deadlock, done-channel
  3. Пакет sync: мьютексы, пулы и одноразовая инициализация - sync.Mutex, RWMutex, WaitGroup, Once, Map, Pool - когда что использовать

Модуль 2 · Паттерны и тестирование

fan-in/out, pipeline, worker pool, errgroup, race detection

  1. Паттерны: fan-in, fan-out, pipeline, worker pool - Продвинутые паттерны конкурентности для параллельной обработки данных
  2. errgroup и graceful shutdown - golang.org/x/sync/errgroup, context cancellation, signal.NotifyContext, graceful shutdown HTTP-сервера
  3. Race conditions и тестирование конкурентного кода - go run -race, типичные гонки данных, тестирование конкурентного кода, t.Parallel()