Встречается на 27% собеседований по Go

Что такое планировщик

Планировщик (scheduler) в Go — это часть рантайма, которая управляет выполнением горутин (goroutines) на потоках ОС (OS threads). Он работает по модели M:N, где M горутин выполняются на N потоках.

Ключевые особенности:

  • Кооперативный — горутина сама освобождает поток (напр., при блокирующих вызовах или runtime.Gosched()).
  • Work-stealing — если поток простаивает, он может «украсть» задачи у других потоков.
  • Не вытесняющий — горутина работает, пока не выполнит блокирующую операцию или не завершится.

Пример:

go
func main() {
    go func() { fmt.Println("Goroutine 1") }()
    go func() { fmt.Println("Goroutine 2") }()
    runtime.Gosched() // Даём шанс другим горутинам выполниться
}
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы