Junior — Middle
Каква е основната роля на типа sync.Once при синхронизирането на потоци в Go?
sobes.tech AI
Отговор от AI
Типът sync.Once в Go се използва, за да гарантира, че определен фрагмент от код ще бъде изпълнен точно веднъж, дори ако е извикан от няколко нишки (goroutines).
Основната му роля е безопасната инициализация на ресурси (например създаване на сингълтън), за да се избегнат състезателни условия и повторно изпълнение.
Пример за използване:
var once sync.Once
var config *Config
func loadConfig() {
config = &Config{/* инициализация */}
}
func GetConfig() *Config {
once.Do(loadConfig) // loadConfig ще бъде извикан само веднъж
return config
}
По този начин sync.Once осигурява потокобезопасно еднократно изпълнение на функция.