🟡 Средний · 2 очк. Горутины и конкурентность
Что такое data race?
A Ошибка компиляции
B Одновременный доступ к памяти без синхронизации
C Утечка горутины
D Взаимная блокировка
Объяснение вопроса

Data race - это ситуация, когда две или более горутины обращаются к одной и той же переменной одновременно, и хотя бы одно обращение - запись. Поведение программы при этом не определено.

Пример

var n int
go func() { n++ }()
go func() { n++ }()
// n может быть 0, 1 или 2 - гонка

Решения

  • sync.Mutex - блокировка на время доступа
  • Каналы - передавать данные между горутинами, не деля память
  • sync/atomic - атомарные операции для счётчиков

Детектор: go test -race или go run -race.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.