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