Назад к вопросам
Senior
3
Какие способы переключения горутины знаешь? Как в ручном режиме переключить горутину?
Компании, где спрашивали
Lenta Tech
Ответ от нейросети
sobes.tech AI
В Go переключение между горутинами происходит автоматически планировщиком рантайма, который распределяет время процессора между ними. Основные способы переключения горутины:
- Блокирующие операции: при ожидании канала, мьютекса, таймера и т.п. горутина блокируется, и планировщик переключается на другую.
- Вызов
runtime.Gosched(): это явный способ уступить процессор, заставляя текущую горутину приостановиться и дать возможность другим горутинам выполниться.
Пример ручного переключения:
import "runtime"
func worker() {
for i := 0; i < 10; i++ {
// какая-то работа
runtime.Gosched() // уступаем планировщику
}
}
Таким образом, runtime.Gosched() — это инструмент для ручного переключения горутины, полезный для улучшения отзывчивости или предотвращения монополизации процессора одной горутиной.