Встречается на 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() // Даём шанс другим горутинам выполниться
}Похожие вопросы
- Какие у тебя зарплатные ожидания30%
- В чем разница между буферизованным и небуферизованным каналом29%
- Что происходит при записи в закрытый канал29%
- С какими базами данных работал29%
- Что такое репликация25%
- Что такое mutex, какие они бывают и как их использовать25%
- Что такое WaitGroup25%
- Какие индексы знаешь25%
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы
