Back to questions
Junior — Middle
81
Каким образом можно принудительно указать планировщику Go выполнить переключение контекста на другую горутину?
Answer from AI
sobes.tech AI
В Go для принудительного переключения контекста между горутинами используется функция runtime.Gosched(). Она сообщает планировщику, что текущая горутина готова уступить процессор другим горутинам, позволяя им выполниться.
Пример использования:
package main
import (
"fmt"
"runtime"
)
func main() {
go func() {
for i := 0; i < 5; i++ {
fmt.Println("Горутина 1 -", i)
runtime.Gosched() // уступаем планировщику
}
}()
for i := 0; i < 5; i++ {
fmt.Println("Главная горутина -", i)
runtime.Gosched() // уступаем планировщику
}
}
Таким образом, runtime.Gosched() позволяет явно дать возможность другим горутинам выполниться, не блокируя текущую.