Sobes.tech
Junior — Middle

Jaká je hlavní role typu sync.Once při synchronizaci vláken v Go?

sobes.tech AI

Odpověď od AI

Typ sync.Once v jazyce Go se používá k zajištění, že určitý kus kódu bude vykonán přesně jednou, i když je volán z více vláken (gorutin).

Hlavní funkcí je bezpečná inicializace zdrojů (například vytvoření singletonu), aby se předešlo závodům a opakovanému provádění.

Příklad použití:

var once sync.Once
var config *Config

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

func GetConfig() *Config {
    once.Do(loadConfig) // loadConfig bude voláno pouze jednou
    return config
}

Tímto způsobem sync.Once zajišťuje bezpečné, vlákno-ochranné provedení funkce pouze jednou.