Sobes.tech
Junior — Middle

Kas nutinka, jei įrašote į kanalą, kurio buferis yra visiškai užpildytas?

sobes.tech AI

Atsakymas iš AI

Go kalboje, jei bandote įrašyti reikšmę į kanalą su buferiu, kuris yra visiškai užpildytas, rašymo operacija bus blokuojama, kol kanale neatsiras laisvos vietos (t.y., kol kas nors neskaitė iš kanalo). Tai užtikrina sinchronizaciją tarp gorutinų ir neleidžia duomenų praradimo.

Pavyzdys:

ch := make(chan int, 2) // 2 elementų buferis
ch <- 1
ch <- 2
// ch <- 3 // čia rašymas bus blokuojamas, kol kas nors neskaitė iš ch