Sobes.tech
Junior — Middle

Как можете принудително да накарате планировчика на Go да извърши превключване на контекста към друга горутина?

sobes.tech AI

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