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.