Sobes.tech
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() позволяет явно дать возможность другим горутинам выполниться, не блокируя текущую.