Назад к вопросам
Техзор
Senior
4
Что такое data race?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Data race — это ситуация в многопоточных программах, когда два или более потока одновременно обращаются к одной и той же переменной, и при этом хотя бы один из них выполняет запись, без должной синхронизации.
В Go data race приводит к неопределённому поведению программы, так как порядок операций не гарантирован.
Пример data race в Go:
package main
import (
"fmt"
"time"
)
func main() {
var counter int
go func() {
counter = 1
}()
go func() {
counter = 2
}()
time.Sleep(time.Second)
fmt.Println(counter)
}
Здесь два горутины одновременно пишут в переменную counter без синхронизации, что приводит к data race.
Для обнаружения data race в Go можно использовать флаг -race при запуске или тестировании:
go run -race main.go