Junior — Middle
Leg uit wat het doel is en hoe de structuur sync.Once in Go werkt.
sobes.tech AI
Antwoord van AI
sync.Once in Go wordt gebruikt om te garanderen dat een bepaalde operatie (bijvoorbeeld initialisatie) slechts één keer wordt uitgevoerd, zelfs als meerdere goroutines deze gelijktijdig aanroepen. Dit is handig voor lazy initialisatie of resource-instellingen.
Werking principe:
sync.Oncebevat een interne vlag die bijhoudt of de functie al is uitgevoerd.- De methode
Do(f func())accepteert een functiefen garandeert dat deze slechts één keer wordt aangeroepen. - Als meerdere goroutines
Dogelijktijdig aanroepen, voert slechts één de functie uit, de anderen wachten tot deze klaar is.
Voorbeeld:
var once sync.Once
func initialize() {
fmt.Println("Initialisatie voltooid")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Wacht tot alle goroutines klaar zijn
}
In dit voorbeeld wordt het bericht "Initialisatie voltooid" precies één keer weergegeven.