> Какие состояния могут быть у горутин в 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.
> Похожие задачи по backend
Есть ли у вас мониторинг и на каком стеке он работает
Для чего нужен FOR UPDATE в PostgreSQL
Каковы преимущества и недостатки индексов в базе данных
В чем разница между Kafka и RabbitMQ
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью