Sobes.tech
Back to questions
Senior
2

Какие способы переключения горутины знаешь? Как в ручном режиме переключить горутину?

Companies where asked
Lenta Tech

Answer from AI

sobes.tech AI

В Go переключение между горутинами происходит автоматически планировщиком рантайма, который распределяет время процессора между ними. Основные способы переключения горутины:

  • Блокирующие операции: при ожидании канала, мьютекса, таймера и т.п. горутина блокируется, и планировщик переключается на другую.
  • Вызов runtime.Gosched(): это явный способ уступить процессор, заставляя текущую горутину приостановиться и дать возможность другим горутинам выполниться.

Пример ручного переключения:

import "runtime"

func worker() {
    for i := 0; i < 10; i++ {
        // какая-то работа
        runtime.Gosched() // уступаем планировщику
    }
}

Таким образом, runtime.Gosched() — это инструмент для ручного переключения горутины, полезный для улучшения отзывчивости или предотвращения монополизации процессора одной горутиной.