Go: конкурентность от и до — горутины, каналы, sync, context

Конкурентность Go на уровне собеседования: горутины, каналы, select, sync, context и боевые паттерны — pipeline, worker pool, semaphore, graceful shutdown. 340 задач с автопроверкой в браузере на Go 1.26 плюс 21 локальное задание, где гонки вы ловите настоящим детектором -race. Финал — капстоун ProcessOrders:…
Продвинутый уровень
7–9 часов в неделю, 7–8 недель на курс (общий объём ~58 часов)
Сертификат Stepik

Чему вы научитесь

  • Запускать горутины и управлять их жизненным циклом: WaitGroup, безопасный сбор результатов, диагностика и предотвращение утечек
  • Работать с каналами: буферизованные и небуферизованные, направления, close и range, ok-идиома, nil-канал и deadlock
  • Мультиплексировать через select: неблокирующие операции с default, таймауты, done-канал, отмена
  • Владеть пакетом sync: Mutex и RWMutex, atomic, Once, sync.Map, Cond — и осознанно выбирать между мьютексом и атомиком
  • Управлять отменой и дедлайнами через context: пропагация по дереву горутин, first-error, корректное завершение
  • Собирать боевые паттерны: pipeline, fan-in/fan-out, worker pool, semaphore, rate limiting, graceful shutdown
  • Объяснять data race через модель памяти Go и happens-before — и находить гонки детектором -race
  • Собрать капстоун ProcessOrders: worker pool + склад под мьютексом + отмена по context, с результатом, не зависящим от порядка горутин

О курсе

Конкурентность — то место, где Go выигрывает у других языков и где чаще всего валятся на собеседовании. Горутину запустить легко; трудно — не потерять её, не поймать гонку и получить результат, который не зависит от того, в каком порядке отработали воркеры.

Чем этот курс отличается

Здесь конкурентность разобрана целиком и отдельным курсом: в остальных курсах линейки горутины и каналы не дублируются. Главная проблема обучения теме — недетерминизм: «работает через раз» нельзя проверить обычным тестом. Мы решаем это двумя способами. На платформе результат ваших функций проверяется детерминированным агрегатом (сумма, множество, состояние склада) и стресс-повтором: решение прогоняется многократно, и плавающая логика падает. А чтобы вы увидели гонку по-настоящему, в курсе 21 парное локальное задание: тот же код запускается у вас с флагом -race, и детектор показывает конфликт своими словами.

Ваш путь по курсу

Сначала — горутины: запуск, жизненный цикл, захват переменных, WaitGroup, утечки. Затем каналы: буферизация, направления, close и range, ok-идиома, nil-канал и классические дедлоки. Дальше select: default, таймауты, done-канал. Потом sync: Mutex и RWMutex, Once, atomic, sync.Map, Cond и выбор инструмента под задачу. Следом context: отмена, дедлайны, пропагация, значения в конвейере. Затем модуль боевых паттернов: pipeline, fan-in/fan-out, worker pool, semaphore, rate limiting, graceful shutdown. В финале — data race и модель памяти, починка гонок в чужом коде и капстоун ProcessOrders: worker pool обрабатывает заказы shopdb, резервирует товар на потокобезопасном складе, корректно завершается по отмене и возвращает детерминированный результат.

Сколько здесь практики

680 шагов, из них 72 % — активные: 340 задач на Go с автопроверкой, 147 интерактивных тестов и 21 локальное задание с -race. У каждой задачи — лестница подсказок из 1–3 ступеней и неограниченное число попыток, эталон открывается после сдачи. Каждый модуль заканчивается практикумом, часть модулей — двумя.

С чего начать

Первый практический урок про горутины открыт бесплатно — запустите первую горутину и получите зелёную галочку до покупки.

Для кого этот курс

Курс — для тех, кто пишет на Go и подходит к конкурентности всерьёз.

  • Джунам и мидлам на Go, у которых в проде «иногда падает» и «иногда виснет», а причину найти не получается.
  • Готовящимся к собеседованию: конкурентность — обязательная секция интервью на Go, от «чем буферизованный канал отличается от небуферизованного» до «покажи worker pool».
  • Разработчикам с других языков, привыкшим к потокам и локам, которым нужно перестроиться на каналы, select и context.
  • Выпускникам курса «Go: идиоматичный код», которые пишут идиоматичный последовательный код и хотят перейти к конкурентному.

Начальные требования

Что нужно:

  • Уверенный базовый Go: функции, структуры, слайсы и мапы, указатели, интерфейсы и ошибки. Это курсы «Go с нуля» и «Go: идиоматичный код».
  • Компьютер с браузером. Для 21 локального задания с детектором гонок — установленный Go (в курсе показано, как поставить).

Что НЕ нужно:

  • Не нужен опыт многопоточного программирования на других языках: модель памяти и happens-before объясняются с нуля.
  • Не нужно ставить Go, чтобы пройти курс и получить сертификат: все 340 задач решаются в браузере, локальные задания — дополнительные.
  • Не нужна теория операционных систем: планировщик подаётся ровно в объёме, нужном для практики.

Как проходит обучение

  • Формат: 8 модулей, 48 уроков, 680 коротких шагов. Текстовые лекции с примерами на сквозном домене shopdb (конкурентная обработка заказов), без видео.
  • Практика: 72 % шагов — активные. 340 задач с автопроверкой, 147 интерактивных тестов и 21 локальное задание с настоящим детектором гонок -race.
  • Проверка: скрытые тесты на движке Go 1.26.1. Конкурентный результат проверяется детерминированным агрегатом и стресс-повтором — «работает через раз» не проходит. Отмена моделируется явным cancel(), а не таймером: тест не зависит от скорости машины.
  • Темп: свой, без дедлайнов. Доступ бессрочный, попыток неограниченно.
  • Поддержка: комментарии под каждым шагом.

Ориентир нагрузки: при 7–9 часах в неделю курс проходится примерно за 7–8 недель; общий объём — около 58 часов.

Программа курса

В курс входят

  • 48 уроков
  • 147 тестов
  • 340 интерактивных задач
загружаем...

Наши преподаватели

Certificate

Сертификат

Сертификат Stepik

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

  • Навык писать конкурентный код, который не течёт и не зависает: осознанный выбор между каналом, мьютексом и атомиком, корректная отмена через context.
  • Умение читать отчёт детектора -race и чинить гонку, а не прятать её под sleep.
  • 340 решённых задач, 147 тестов и 21 локальный прогон с -race.
  • Капстоун ProcessOrders — конкурентная обработка заказов shopdb (worker pool, потокобезопасный склад, graceful shutdown) — артефакт в портфолио и готовый ответ на вопрос собеседования.
  • Бессрочный доступ к материалам и обновлениям, сертификат Stepik.
  • Мост дальше: «Go: тестирование и стандартная библиотека» — https://stepik.org/course/297081.

Сколько стоит обучение

2 490 ₽
Вы попробовали и поняли, что вам сейчас не подходит этот курс? Ничего страшного, мы вернём вам деньги в течение 30-ти дней после покупки.

Часто задаваемые вопросы

Расскажите о курсе друзьям

2 490 ₽