Открытые уроки

Внутреннее устройство планировщика Go

В ходе видео рассмотрим:​
  • Что такое планировщик Go: объясняются основы его работы, как планировщик Go управляет созданием, выполнением и завершением горутин, обеспечивая одновременно эффективное распределение задач между доступными потоками операционной системы.​
  • Модели конкурентности и параллелизма: рассматривается разница между конкурентностью (concurrency) и параллелизмом (parallelism), а также способы их достижения с помощью горутин и планировщика
  • Детальный анализ компонентов, включая процессы (P), треды (M) и горутины (G), и их взаимодействие для эффективного выполнения задач.​
  • Механизмы синхронизации и блокировки: обсуждаются инструменты, такие как мьютексы и каналы, которые используются для управления доступом к общим ресурсам и предотвращения состояний гонки.​
  • Оптимизацию производительности: представлены методы настройки и оптимизации работы планировщика для достижения максимальной эффективности приложений на Go.​

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

Отдельное внимание в уроке уделяется развитию планировщика Go и его эволюции от простой модели кооперативной многозадачности к современному. Рассматривается, каким образом Go Runtime автоматически распределяет горутины между потоками и оптимизирует переключение контекста. Благодаря такой архитектуре разработчики могут писать конкурентный код без необходимости вручную управлять потоками или беспокоиться о низкоуровневых деталях ОС.

Также подробно изучаются внутренние механизмы, благодаря которым планировщик поддерживает баланс нагрузки между процессорами P и эффективно реагирует на блокирующие вызовы системных функций. В видео разбираются ситуации, когда блокировка в одной горутине может временно “освободить” процессор P и позволить другим горутинам продолжить выполнение, что делает конкурентную модель Go чрезвычайно отзывчивой и устойчивой под высокой нагрузкой.

Урок про планировщик в языке Go рекомендуется для программистов, которые хотят улучшить свои навыки в области многопоточного программирования и оптимизации производительности приложений с помощью такого инструмента, как планировщик Go.

Автор видео про планировщик в языке Go - Владимир Балун, основатель Balun.Courses и опытный программист, имеющий опыт работы более 6 лет в BigTech-компаниях. Немного об опыте Владимира:
  • руководил разработкой системы трейсинга в Яндекс;
  • разрабатывал систему трейсинга (5ГБ/с трафик) и непрерывного профилирования в Ozon;
  • разрабатывал движок по подбору таргетированной рекламы в Т-Банке;
  • разрабатывал антивирус Kaspersky Endpoint Security и многое другое.

Если ты хочешь подробнее углубиться в Go, то у нас есть курс с глубоким погружением в данный язык программирования - Глубокий Go. Помимо того, что ты подробно изучишь планировщик, еще ты больше узнаешь про сборщик мусора, горутины, массивы и срезы, функции и структуры данных и многое другое, что требуется для разработки высоконагруженных микросервисов на Go. Длительность такого углубленного курса по Go - 1,5 месяца. Обучение хорошо подойдет, например, для Go-разработчиков, DevOps-инженерам и фулстек-разработчикам.

Для прохождения курса нужно знать синтаксис языка Go, поверхностно знать базовые алгоритмы и структуры данных.
Concurrency in Go Глубокий Go Go-собеседования