Junior — Middle
Comment assurer une écriture sécurisée des données dans un canal depuis plusieurs goroutines sans utiliser de verrouillage?
sobes.tech IA
Réponse de l'IA
En Go, pour écrire des données en toute sécurité dans un canal depuis plusieurs goroutines sans utiliser de verrouillages, il suffit généralement d'utiliser le canal lui-même, car les canaux en Go sont sûrs pour la concurrence par défaut.
Exemple :
ch := make(chan int)
// Écriture dans le canal depuis plusieurs goroutines
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // écriture sécurisée
}(i)
}
// Lecture du canal
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Si vous devez garantir que l'écriture ne se bloque pas, vous pouvez utiliser un canal tamponné. Ainsi, les blocages manuels ne sont pas nécessaires, car le canal assure la synchronisation.