Junior — Middle
Kaip užtikrinti saugų duomenų įrašymą į kanalą iš kelių goroutine'ų be užrakinimo?
sobes.tech AI
Atsakymas iš AI
Go kalboje, saugiai rašyti duomenis į kanalą iš kelių gorutinų be užraktų paprastai pakanka naudoti patį kanalą, nes kanalai Go yra numatytai saugūs kelių gijų aplinkoje.
Pavyzdys:
ch := make(chan int)
// Rašymas į kanalą iš kelių gorutinų
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // saugus rašymas
}(i)
}
// Skaitymas iš kanalo
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Jei norite užtikrinti, kad rašymas nebus blokuojamas, galite naudoti buferuotą kanalą. Tokiu būdu, rankiniai užraktai nėra reikalingi, nes kanalas užtikrina sinchronizaciją.