Sobes.tech
Junior — Middle

Go tilida Once funksiyasidan foydalandingizmi va uni loyihalaringizda qanday ishlatgansiz?

sobes.tech AI

AIdan javob

Go tilida, sync.Once funksiyasi, ma'lum bir kod bo'lagi faqat bir marta bajarilishini ta'minlash uchun ishlatiladi, hatto chaqiriq bir nechta goroutinlardan bir vaqtning o'zida bo'lsa ham. Bu, masalan, resurslarni faqat bir marta yaratish uchun foydalidir.

Foydalanish misoli:

var once sync.Once

func initialize() {
    fmt.Println("Boshlash tugallandi")
}

func main() {
    for i := 0; i < 5; i++ {
        go func() {
            once.Do(initialize) // initialize faqat bir marta chaqiriladi
        }()
    }
    time.Sleep(time.Second) // Goroutinlarning tugashini kutamiz
}

Loyihalarimda, men sync.Once ni konfiguratsiya yoki ma'lumotlar bazasiga ulanishni kechiktirilgan tarzda boshlash uchun ishlatganman, shunda takroriy boshlashlar va raqobat shartlari oldini olinadi.