Если sentCount одновременно меняют несколько горутин, защитите его mutex или атомарным счётчиком. Обычное чтение рядом с атомарной записью всё равно небезопасно.
sentCount передаётся без синхронизации — как это исправить?
Если sentCount одновременно меняют несколько горутин, защитите его mutex или атомарным счётчиком. Обычное чтение рядом с атомарной записью всё равно небезопасно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Если sentCount одновременно меняют несколько горутин, защитите его mutex или атомарным счётчиком. Обычное чтение рядом с атомарной записью всё равно небезопасно.
Для Go 1.19+ возможен atomic.Int64: sentCount.Add(1), а для чтения — sentCount.Load(). Счётчик нельзя копировать после начала использования. Если вместе с ним нужно согласованно обновлять другие поля, используйте один mutex для всего инварианта, а не атомик только для числа.