Junior — Middle
Vysvetlite účel a princíp fungovania štruktúry sync.Once v Go.
sobes.tech AI
Odpoveď od AI
sync.Once v Go se uporablja za zagotovitev, da bo določena operacija (npr. inicializacija) izvedena točno enkrat, tudi če jo več gorutin hkrati kliče. To je uporabno za leno inicializacijo ali nastavitev virov.
Načelo delovanja:
sync.Oncevsebuje notranjo zastavico, ki spremlja, ali je funkcija že bila izvedena.- Metoda
Do(f func())sprejme funkcijofin zagotavlja, da bo le-ta klicana samo enkrat. - Če več gorutin kliče
Dohkrati, bo le ena izvedla funkcijo, ostale pa počakale na zaključek.
Primer:
var once sync.Once
func initialize() {
fmt.Println("Inicializacija zaključena")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Čakanje na goroutine
}
V tem primeru bo sporočilo "Inicializacija zaključena" prikazano točno enkrat.