Как происходит блокировка при попытке освободить семафор (прочитать из канала), если в канале нет элементов?

Чтение из пустого канала блокируется до появления значения или закрытия. Для семафора это обычно означает лишний Release либо нарушение пары захват–освобождение.

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

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

Чтение из пустого канала блокируется до появления значения или закрытия. Для семафора это обычно означает лишний Release либо нарушение пары захват–освобождение.

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

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

Чтение из пустого канала блокируется до появления значения или закрытия. Для семафора это обычно означает лишний Release либо нарушение пары захват–освобождение.

В модели «отправка занимает слот, чтение освобождает» освобождать можно только успешно полученный слот. Используйте defer сразу после успешного Acquire. Закрытие канала не является корректным способом завершения такого семафора: оно меняет поведение всех операций. Если нужно проверять лишние освобождения, оформите семафор отдельным типом с явным контрактом.

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

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

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

Подробнее