Запускайте целевые Go-тесты с -race и разбирайте оба конфликтующих стека обращения к памяти. Race detector замечает только пути, реально выполненные в запуске.
Как диагностировать гонку данных при unit-тестах в Go?
Запускайте целевые Go-тесты с -race и разбирайте оба конфликтующих стека обращения к памяти. Race detector замечает только пути, реально выполненные в запуске.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Запускайте целевые Go-тесты с -race и разбирайте оба конфликтующих стека обращения к памяти. Race detector замечает только пути, реально выполненные в запуске.
В тесте создайте контролируемое перекрытие горутин, а не случайный time.Sleep. Исправьте общий протокол доступа через mutex, атомики или передачу владения. Отсутствие предупреждения не доказывает отсутствия всех гонок, особенно если нужная ветка не выполнялась.