Sobes.tech
Junior — Middle

Care este rolul principal al tipului sync.Once în sincronizarea firelor în Go?

sobes.tech AI

Răspuns de la AI

Tipul sync.Once în Go este utilizat pentru a garanta că un anumit fragment de cod va fi executat exact o dată, chiar dacă este apelat din mai multe goroutines.

Rolul principal este inițializarea sigură a resurselor (de exemplu, crearea unui singleton), pentru a evita condițiile de cursă și executarea repetată.

Exemplu de utilizare:

var once sync.Once
var config *Config

func loadConfig() {
    config = &Config{/* inițializare */}
}

func GetConfig() *Config {
    once.Do(loadConfig) // loadConfig va fi apelat doar o dată
    return config
}

Astfel, sync.Once asigură executarea sigură pentru mai multe fire de execuție a unei funcții o singură dată.