Небуферизованный канал синхронизирует отправителя и получателя напрямую; буферизованный допускает очередь до capacity. Запись в полный и чтение из пустого канала ждут.
Расскажи про буферизированные и небуферизированные каналы. Когда какие используем? Как они блокируются, когда уходят в дедлок?
Небуферизованный канал синхронизирует отправителя и получателя напрямую; буферизованный допускает очередь до capacity. Запись в полный и чтение из пустого канала ждут.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Небуферизованный канал синхронизирует отправителя и получателя напрямую; буферизованный допускает очередь до capacity. Запись в полный и чтение из пустого канала ждут.
Буфер не устраняет ошибки жизненного цикла: если никто больше не читает или не пишет, ожидание может стать бесконечным. Deadlock возникает при взаимной или безвыходной зависимости, а не при любой краткой блокировке. Планируйте закрытие, отмену и ожидание отправителей. Размер буфера выбирают по допустимой очереди, а не как способ скрыть зависание.