← Все навыки

Concurrency в Go

Горутины, каналы, sync-примитивы, паттерны конкурентного кода — всё, что спрашивают на собеседованиях по Go

Горутины и каналы sync-примитивы Индивидуально с ментором

Для кого этот навык

  • Go-разработчики, которые хотят углубить понимание конкурентности и перестать бояться race conditions
  • Разработчики, переходящие на Go и желающие освоить его главную суперсилу
  • Все, кто готовится к секции по конкурентности на собеседовании

Что вы получите

Глубокое понимание Как работает планировщик Go, stack growth, утечки горутин
Паттерны Fan-in / fan-out, pipeline, worker pool, graceful shutdown
Практика Задачи на конкурентность с разбором и код-ревью от ментора
Готовность к интервью Типичные вопросы по горутинам, каналам и sync на собеседованиях

Программа

Горутины

Планировщик Go, создание, утечки, лимитирование
  • Как устроен планировщик Go: M:N модель, G-M-P
  • Stack growth: динамический стек горутины
  • Утечки горутин: как обнаружить и предотвратить

Каналы

Buffered vs unbuffered, select, direction
  • Buffered vs unbuffered: когда какой использовать
  • select для мультиплексирования каналов
  • Направленные каналы: chan<- и <-chan для безопасности

sync-примитивы

Mutex, RWMutex, WaitGroup, Once, Pool
  • sync.Mutex и sync.RWMutex: защита общих данных
  • sync.WaitGroup: ожидание завершения группы горутин
  • sync.Once, sync.Pool, sync.Map — специализированные примитивы

Паттерны конкурентности

Fan-in, fan-out, pipeline, worker pool, errgroup
  • Fan-in / fan-out: параллельная обработка и сбор результатов
  • Pipeline: цепочки обработки данных через каналы
  • Worker pool: ограничение параллельности
  • context.Context: отмена, таймауты, graceful shutdown
  • errgroup: обработка ошибок в группе горутин

Практика

Задачи на конкурентность с проверкой через go test -race

  • Реализация паттернов: fan-in, fan-out, pipeline, worker pool
  • Обнаружение и устранение race conditions и утечек горутин
  • Graceful shutdown с context и обработкой ошибок через errgroup