Sobes.tech
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.