Junior — Middle
Aká je hlavná úloha typu sync.Once pri synchronizácii vlákien v Go?
sobes.tech AI
Odpoveď od AI
Typ sync.Once v jazyce Go sa používa na zabezpečenie, že určitý kus kódu bude vykonaný presne raz, aj keď je volaný z viacerých vlákien (goroutines).
Hlavnou úlohou je bezpečná inicializácia zdrojov (napríklad vytvorenie singletonu), aby sa predišlo závodným podmienkam a opakovanému vykonávaniu.
Príklad použitia:
var once sync.Once
var config *Config
func loadConfig() {
config = &Config{/* inicializácia */}
}
func GetConfig() *Config {
once.Do(loadConfig) // loadConfig bude volané iba raz
return config
}
Týmto spôsobom sync.Once zabezpečuje bezpečné, vlákno-ochranné vykonanie funkcie iba raz.