Sobes.tech
Junior — Middle

Go'da iplarni sinxronlashtirishda sync.Once turining asosiy roli nima?

sobes.tech AI

AIdan javob

Go tilida sync.Once turi, ma'lum bir kod bo'lagi faqat bir marta bajarilishini ta'minlash uchun ishlatiladi, hatto unga bir nechta oqimlar (goroutinlar) dan murojaat qilinsa ham.

Asosiy roli — resurslarni xavfsiz tarzda boshlash (masalan, singleton yaratish), shuningdek, raqobat shartlari va takroriy bajarilishlarni oldini olish.

Foydalanish misoli:

var once sync.Once
var config *Config

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

func GetConfig() *Config {
    once.Do(loadConfig) // loadConfig faqat bir marta chaqiriladi
    return config
}

Shunday qilib, sync.Once funksiyaning xavfsiz va faqat bir marta bajarilishini ta'minlaydi.