Sobes.tech
Назад к вопросам
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 обеспечивает потокобезопасное однократное выполнение функции.