sentCount передаётся без синхронизации — как это исправить?

Если sentCount одновременно меняют несколько горутин, защитите его mutex или атомарным счётчиком. Обычное чтение рядом с атомарной записью всё равно небезопасно.

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

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

Если sentCount одновременно меняют несколько горутин, защитите его mutex или атомарным счётчиком. Обычное чтение рядом с атомарной записью всё равно небезопасно.

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

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

Если sentCount одновременно меняют несколько горутин, защитите его mutex или атомарным счётчиком. Обычное чтение рядом с атомарной записью всё равно небезопасно.

Для Go 1.19+ возможен atomic.Int64: sentCount.Add(1), а для чтения — sentCount.Load(). Счётчик нельзя копировать после начала использования. Если вместе с ним нужно согласованно обновлять другие поля, используйте один mutex для всего инварианта, а не атомик только для числа.

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

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

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

Подробнее