Sobes.tech
Back to questions
Senior
3

Что такое data race?

Companies where asked
ТехзорТехзор

Answer from AI

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