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