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