> Куда попадает функция при вызове go в Go? В какую очередь? (Go)

Уровень: middle · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: InDrive

Стек: Go

> Пример ответа

При вызове go func() в Go функция попадает в глобальную очередь (global run queue) планировщика, если ни один из потоков (M) не может немедленно принять её в свою локальную очередь (local run queue). Локальные очереди привязаны к каждому логическому процессору (P). Планировщик Go (GMP-модель) распределяет горутины так: сначала проверяется локальная очередь текущего P, затем - глобальная очередь, и в конце - кража (work stealing) из очередей других P. Таким образом, go не отправляет функцию в какую-то одну фиксированную очередь - она может попасть либо в локальную очередь текущего P (если там есть место), либо в глобальную, если локальная переполнена или P занят.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью