Junior — Middle
Come garantire una scrittura sicura dei dati in un canale da più goroutine senza usare blocchi?
sobes.tech AI
Risposta dell'AI
In Go, per scrivere dati in modo sicuro in un canale da più goroutine senza usare blocchi, di solito basta usare il canale stesso, poiché i canali in Go sono thread-safe per impostazione predefinita.
Esempio:
ch := make(chan int)
// Scrittura nel canale da più goroutine
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // scrittura sicura
}(i)
}
// Lettura dal canale
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Se si desidera garantire che la scrittura non si blocchi, si può usare un canale con buffer. In questo modo, non sono necessari blocchi manuali, poiché il canale garantisce la sincronizzazione.