Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: work stealing, scheduler, runtime

Почему Go runtime использует “work stealing” модель и как она работает?

Проверяет знание планировщика Go и механизма распределения горутин.

Короткий ответ

Work stealing — это механизм, при котором бездействующие worker-потоки «крадут» задачи из очередей других потоков. Это снижает простои и улучшает баланс нагрузки.

Длинный ответ

Go имеет модель M:N (горунтины мапятся на системные потоки).

Каждый P (processor) имеет свою очередь готовых goroutine.

Если P заканчивает свои задачи:

  1. он ищет задачу в локальной очереди;

  2. если пусто — крадёт от других P (обычно половину очереди);

  3. если и там пусто — берёт задачу от global queue.

Это обеспечивает:

  • равномерное распределение нагрузки;

  • отсутствие глобальной точки блокировки;

  • предсказуемое выполнение.

В отличие от других моделей, где есть одна глобальная очередь (bottleneck), work stealing масштабируется лучше.

Вывод:

Work stealing — ключевой фактор масштабируемости Go-планировщика.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    8

Навыки

  • Golang

    Golang

Ключевые слова

#work stealing

#scheduler

#runtime

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.