Какие способы переключения горутины знаешь? Как в ручном режиме переключить горутину?

В Go переключение между горутинами происходит автоматически планировщиком рантайма, который распределяет время процессора между ними. Основные способы переключения горутины:

Короткий ответ

Что ответить на собеседовании

В Go переключение между горутинами происходит автоматически планировщиком рантайма, который распределяет время процессора между ними. Основные способы переключения горутины:

Подробный разбор

Ответ с пояснениями

В Go переключение между горутинами происходит автоматически планировщиком рантайма, который распределяет время процессора между ними. Основные способы переключения горутины:

  • Блокирующие операции: при ожидании канала, мьютекса, таймера и т.п. горутина блокируется, и планировщик переключается на другую.
  • Вызов runtime.Gosched(): это явный способ уступить процессор, заставляя текущую горутину приостановиться и дать возможность другим горутинам выполниться.

Пример ручного переключения:

import "runtime"

func worker() {
    for i := 0; i < 10; i++ {
        // какая-то работа
        runtime.Gosched() // уступаем планировщику
    }
}

Таким образом, runtime.Gosched() — это инструмент для ручного переключения горутины, полезный для улучшения отзывчивости или предотвращения монополизации процессора одной горутиной.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку