Goroutine e Concorrenza
WARNING: DATA RACE / Write at ... by goroutine X: / Previous read at ... by goroutine Y: – Golang DATA_RACE_DETECTED
Il race detector di Go ('go run -race' o 'go test -race') segnala che due goroutine hanno effettuato accessi simultanei alla stessa variabile di memoria e almeno uno di essi è una scrittura non sincronizzata.
Cosa significa questo errore?
Il race detector di Go ('go run -race' o 'go test -race') segnala che due goroutine hanno effettuato accessi simultanei alla stessa variabile di memoria e almeno uno di essi è una scrittura non sincronizzata.
Messaggio originale
WARNING: DATA RACE / Write at ... by goroutine X: / Previous read at ... by goroutine Y:Contesto e parole chiave
Alias
- go test -race data race detected
- WARNING DATA RACE Go
Messaggi alternativi
- conflitto di memoria data race rilevato
Prodotti
- Go Runtime / Go Compiler / Go Modules
Piattaforme
- Linux
- macOS
- Windows
Parole chiave
- errore-golang-data-race-detected
- go
- golang
- golang.concorrenza.data-race-detected-by-race-detector
- Goroutine e Concorrenza
Cause possibili
Causa tecnica per Errore Go: WARNING: DATA RACE (Conflitto di Memoria Concorrente Rilevato)
Il race detector di Go ('go run -race' o 'go test -race') segnala che due goroutine hanno effettuato accessi simultanei alla stessa variabile di memoria e almeno uno di essi è una scrittura non sincronizzata.
molto comuneDiagnosi
Verifica e diagnostica per Errore Go: WARNING: DATA RACE (Conflitto di Memoria Concorrente Rilevato)
Eseguire i comandi go build o go vet per rilevare incongruenze a livello di codice.
Come leggere il risultato. Restituisce eventuali errori statici, disallineamenti di tipo o race condition nel codice Go.
go vet ./...Risoluzione
Risoluzione standard per Errore Go: WARNING: DATA RACE (Conflitto di Memoria Concorrente Rilevato)
Esegui le modifiche di codice raccomandate per risolvere l'anomalia nel codice sorgente Go.
- Ispezionare la riga di codice o stack trace del panic
- Applicare il pattern di correzione (gestione nil, sincronizzazione o tipi)
- Eseguire go test per confermare la corretta esecuzione
go test -v ./...Domande frequenti
Cosa provoca Errore Go: WARNING: DATA RACE (Conflitto di Memoria Concorrente Rilevato) in Go?
Il race detector di Go ('go run -race' o 'go test -race') segnala che due goroutine hanno effettuato accessi simultanei alla stessa variabile di memoria e almeno uno di essi è una scrittura non sincronizzata.
Approfondimenti
- The Go Programming Language Specification / Effective Go documentazione_ufficiale