Sobes.tech
Junior — Middle

Quel est le rôle principal du type sync.Once dans la synchronisation des threads en Go?

sobes.tech IA

Réponse de l'IA

Le type sync.Once en Go est utilisé pour garantir qu’un fragment de code s’exécute exactement une fois, même s’il est appelé depuis plusieurs goroutines.

Son rôle principal est l'initialisation sûre des ressources (par exemple, la création d’un singleton), pour éviter les conditions de course et les exécutions répétées.

Exemple d’utilisation :

var once sync.Once
var config *Config

func loadConfig() {
    config = &Config{/* initialisation */}
}

func GetConfig() *Config {
    once.Do(loadConfig) // loadConfig sera appelé une seule fois
    return config
}

Ainsi, sync.Once assure l’exécution thread-safe d’une fonction une seule fois.