Что случится, если писать данные в небуферизированный канал, не проверяя его состояние или не считав из него?

Если писать данные в небуферизированный канал в Go, не проверяя, готов ли кто-то их принять (то есть не считывая из канала), то операция записи заблокируется.

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

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

Если писать данные в небуферизированный канал в Go, не проверяя, готов ли кто-то их принять (то есть не считывая из канала), то операция записи заблокируется. Это происходит потому, что небуферизированный канал требует, чтобы отправитель и получатель были синхронизированы: отправитель ждёт, пока получатель прочитает значение. Если получатель не готов, запись зависнет и горутина, выполняющая запись, будет заблокирована, что может привести к дедлоку, если другие горутины тоже ожидают.

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

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

Если писать данные в небуферизированный канал в Go, не проверяя, готов ли кто-то их принять (то есть не считывая из канала), то операция записи заблокируется. Это происходит потому, что небуферизированный канал требует, чтобы отправитель и получатель были синхронизированы: отправитель ждёт, пока получатель прочитает значение. Если получатель не готов, запись зависнет и горутина, выполняющая запись, будет заблокирована, что может привести к дедлоку, если другие горутины тоже ожидают.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее