Junior — Middle
Wat is de belangrijkste rol van het type sync.Once bij het synchroniseren van threads in Go?
sobes.tech AI
Antwoord van AI
Het sync.Once type in Go wordt gebruikt om te garanderen dat een bepaald codeblok precies één keer wordt uitgevoerd, zelfs als het vanuit meerdere goroutines wordt aangeroepen.
De belangrijkste rol is het veilig initialiseren van bronnen (bijvoorbeeld het maken van een singleton), om racecondities en herhaalde uitvoering te voorkomen.
Voorbeeld van gebruik:
var once sync.Once
var config *Config
func loadConfig() {
config = &Config{/* initialisatie */}
}
func GetConfig() *Config {
once.Do(loadConfig) // loadConfig wordt slechts één keer aangeroepen
return config
}
Op deze manier zorgt sync.Once voor een thread-veilige eenmalige uitvoering van een functie.