Что такое scheduler

«Что такое scheduler» — вопрос из категории Golang, который задают на 24% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Scheduler в Go — это часть рантайма, которая управляет выполнением горутин на потоках ОС (threads). Он работает по кооперативной модели, переключая горутины в определенных точках (например, при вызове каналов, syscalls, или явном вызове runtime.Gosched()).

Основные особенности:

  • Использует M:N модель (много горутин на немного потоков ОС)
  • Работает в пользовательском пространстве (user-space)
  • Не требует вызовов ядра для переключения контекста

Пример:

func main() {
    go func() { fmt.Println("Горутина 1") }()
    go func() { fmt.Println("Горутина 2") }()
    runtime.Gosched() // Даем шанс выполниться другим горутинам
}