> Какие состояния могут быть у горутин в Go (Go)

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

Компании: amoCRM, Wildberries

Стек: Go

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

У горутины в Go есть три основных состояния: Running, Runnable и Waiting.

  • Running - горутина выполняется на ядре ОС. В каждый момент времени на одном логическом процессоре может выполняться только одна горутина.

  • Runnable - горутина готова к выполнению, но ожидает назначения на поток (M). Она находится в очереди планировщика (runqueue) и будет запущена, когда освободится процессор.

  • Waiting - горутина заблокирована и не может выполняться, пока не наступит определённое событие. Причины: ожидание канала (channel), мьютекса (sync.Mutex), системного вызова (например, чтение из сети), таймера (time.Sleep) или операции ввода-вывода.

Планировщик Go (GMP-модель) переводит горутины между этими состояниями. Например, при блокировке на канале горутина переходит из Running в Waiting, а после получения данных - в Runnable. При завершении системного вызова горутина также возвращается в очередь Runnable.

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

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