> Можно ли примерно оценить, когда запустится горутина после ее запуска? (Go)

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

Компании: Aston

Стек: Go

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

Да, можно дать лишь очень грубую оценку. Горутина не запускается мгновенно - она попадает в очередь планировщика Go (scheduler), который работает по модели M:N (маппинг горутин на потоки ОС). Время старта зависит от:

  1. Количества активных горутин - чем их больше, тем дольше ждать.
  2. Текущей загрузки ядер CPU - если все потоки заняты, горутина будет ждать освобождения.
  3. Приоритета и типа операций - блокирующие вызовы (I/O, syscall) могут заставить планировщик переключиться на другую горутину быстрее.

На практике, в типичных условиях (сотни горутин, не перегруженный CPU) задержка составляет микросекунды (1-10 мкс). Но при высокой конкуренции (тысячи горутин) она может достигать миллисекунд.

Примерная оценка: time.Since до первого выполнения кода горутины покажет реальную задержку, но предсказать её точно невозможно из-за недетерминизма планировщика. Для критичных по времени задач используйте синхронизацию (каналы, sync.WaitGroup) или явные приоритеты через runtime.Gosched().

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

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