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.