Карточка Junior sync и атомики обновлено

Детектор гонок

Вопрос

Как найти гонку данных в Go-программе?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Запустить с флагом -race: go test -race ./... или go run -race. Детектор сообщает о конкурентных доступах, которые реально случились во время выполнения, со стеками обеих горутин.

Ответ

Запустить с флагом -race: go test -race ./... или go run -race. Детектор сообщает о конкурентных доступах, которые реально случились во время выполнения, со стеками обеих горутин.

Разбор

Он находит только случившиеся гонки, поэтому нужны тесты с конкурентной нагрузкой. Замедление в 2-20 раз и рост памяти, поэтому используют в CI, а не в проде. Требует cgo.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.