Sobes.tech
Junior — Middle

Jaka jest główna rola typu sync.Once w synchronizacji wątków w Go?

sobes.tech AI

Odpowiedź od AI

Typ sync.Once w Go jest używany do zapewnienia, że określony fragment kodu zostanie wykonany dokładnie raz, nawet jeśli jest wywoływany z wielu wątków (goroutine).

Główną rolą jest bezpieczna inicjalizacja zasobów (np. tworzenie singletona), aby uniknąć warunków wyścigu i powtórnego wykonania.

Przykład użycia:

var once sync.Once
var config *Config

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

func GetConfig() *Config {
    once.Do(loadConfig) // loadConfig zostanie wywołane tylko raz
    return config
}

W ten sposób sync.Once zapewnia bezpieczne dla wątków wykonanie funkcji tylko raz.