Junior — Middle
Cum se asigură o scriere sigură a datelor într-un canal din mai multe goroutines fără utilizarea blocării?
sobes.tech AI
Răspuns de la AI
În Go, pentru a scrie în siguranță date într-un canal din mai multe goroutines fără a folosi blocări, de obicei este suficient să folosești canalul în sine, deoarece canalele în Go sunt sigure pentru concurență în mod implicit.
Exemplu:
ch := make(chan int)
// Scriere în canal din mai multe goroutines
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // scriere sigură
}(i)
}
// Citire din canal
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Dacă vrei să garantezi că scrierea nu se blochează, poți folosi un canal tamponat. Astfel, blocările manuale nu sunt necesare, deoarece canalul asigură sincronizarea.