Лёгкость горутин обманчива
Параллельное выполнение в Go кажется элементарным ровно до первой утёкшей горутины или намертво зависшего
Wait(). Отправка данных в закрытый канал вызывает панику рантайма, а забытый таймаут в
context заставляет сетевые запросы висеть бесконечно.
Всё это — следствие слепой веры во встроенные механизмы синхронизации.
Отказоустойчивый код строится на твёрдом понимании архитектуры: передаче ответственности за закрытие каналов отправителю, неблокирующем чтении через
select и потоковой обработке файлов через
io.Reader.
Проанализируем безопасные паттерны разработки.
Обсуждение 3
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram