Sobes.tech
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.