Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: goroutine

Что происходит с goroutine при блокирующих операциях (каналы, mutex, I/O)?

Вопрос проверяет понимание работы планировщика Go и того, как runtime управляет блокирующими операциями.

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

Когда goroutine выполняет блокирующую операцию, она не блокирует поток целиком. Runtime переводит goroutine в состояние ожидания и может запустить другую goroutine на том же потоке. Когда операция завершается, goroutine возвращается в очередь выполнения. Это позволяет эффективно использовать ресурсы.

Длинный ответ

В Go блокирующая операция блокирует goroutine, но не обязательно системный поток.

Что происходит при блокировке

Когда goroutine:

  1. Читает из пустого канала.

  2. Пишет в заполненный канал.

  3. Ожидает mutex.

  4. Ждет I/O.

Runtime:

  1. Помечает goroutine как ожидающую (park).

  2. Освобождает поток для выполнения других goroutine.

Как происходит возврат к выполнению

Когда ресурс становится доступным:

  1. Runtime переводит goroutine в очередь выполнения (unpark).

  2. Планировщик назначает ее на поток.

Почему это эффективно

Это позволяет:

  1. Запускать тысячи goroutine.

  2. Не тратить потоки на ожидание.

  3. Повышать производительность I/O-нагруженных систем.

Вывод

При блокирующих операциях goroutine “засыпает”, а поток продолжает выполнять другие задачи, что делает модель конкурентности Go эффективной.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Golang

    Golang

Ключевые слова

#goroutine

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.