Back to questions
МВидео
Middle+
3
Что такое race condition и как его обойти?
Companies where asked
Answer from AI
sobes.tech AI
Race condition — это ситуация в многопоточных или конкурентных программах, когда несколько потоков или горутин одновременно обращаются и изменяют общие данные без должной синхронизации. Это приводит к непредсказуемому поведению и ошибкам.
Чтобы избежать race condition в Go, используют механизмы синхронизации:
- Mutex (sync.Mutex) — блокирует доступ к общему ресурсу, позволяя только одному потоку работать с ним в момент времени.
- Channel — обеспечивает безопасный обмен данными между горутинами.
- Atomic операции (sync/atomic) — для простых операций над переменными.
Пример с mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Такой подход гарантирует, что изменения переменной counter будут последовательными и не приведут к race condition.