Junior — Middle
Kā nodrošināt drošu datu ierakstīšanu kanālā no vairākām goroutine'ām bez bloķēšanas?
sobes.tech AI
Atbilde no AI
Go valodā, droši rakstīt datus kanālā no vairākiem gorutīniem bez bloķēšanas parasti ir pietiekami izmantot pašu kanālu, jo kanāli Go ir noklusējuma stūrī droši.
Piemērs:
ch := make(chan int)
// Rakstīšana kanālā no vairākiem gorutīniem
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // droša rakstīšana
}(i)
}
// Lasīšana no kanāla
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Ja vēlaties nodrošināt, ka rakstīšana netiks bloķēta, varat izmantot buferētu kanālu. Šādā veidā, manuālas bloķēšanas nav nepieciešamas, jo kanāls nodrošina sinhronizāciju.