Как можно явно сообщить планировщику, что нужно переключиться на другую горутину

«Как можно явно сообщить планировщику, что нужно переключиться на другую горутину» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go можно использовать runtime.Gosched() для явного указания планировщику переключиться на другую горутину. Это не гарантирует немедленное переключение, но дает подсказку планировщику.

package main

import (
    "runtime"
    "fmt"
)

func main() {
    go func() {
        for i := 0; i < 5; i++ {
            fmt.Println("Горутина 1:", i)
        }
    }()

    for i := 0; i < 5; i++ {
        runtime.Gosched()  // Даем шанс выполниться другим горутинам
        fmt.Println("Главная горутина:", i)
    }
}

Однако в большинстве случаев явное управление не требуется - планировщик Go эффективно распределяет время между горутинами. Gosched() полезен в редких случаях, например при тестировании или при реализации кооперативной многозадачности.