Junior — Middle
Kuidas tagada andmete turvaline kirjutamine kanalisse mitme goroutine'i poolt ilma lukustust kasutamata?
sobes.tech AI
Vastus AI-lt
Go keeles on tavaline kirjutada andmeid turvaliselt kanalisse mitme goroutine'i poolt ilma lukke kasutamata, kuna kanalid Go-s on vaikimisi niivõrd turvalised mitme lõime jaoks.
Näide:
ch := make(chan int)
// Kirjutamine kanalisse mitme goroutine'i poolt
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // turvaline kirjutamine
}(i)
}
// Lugemine kanalist
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Kui soovite tagada, et kirjutamine ei blokeeru, saate kasutada buferdatud kanalit. Sel juhul ei ole vaja käsitsi lukke, kuna kanal tagab sünkroniseerimise.