Junior — Middle
Go tilida sync.Once tuzilmasining maqsadi va ishlash prinsipi haqida tushuntiring.
sobes.tech AI
AIdan javob
sync.Once in Go ishlatiladi, ma'lum bir operatsiya (masalan, boshlang'ich sozlamalar) faqat bir marta bajarilishini ta'minlash uchun, hatto bir nechta goroutinlar uni bir vaqtning o'zida chaqirsa ham. Bu kechiktirilgan boshlang'ich sozlash yoki resurslarni sozlash uchun foydalidir.
Ishlash prinsipi:
sync.Onceichki bayroqni o'z ichiga oladi va funksiyaning allaqachon bajarilganligini kuzatadi.Do(f func())metodi,ffunksiyasini qabul qiladi va uni faqat bir marta chaqirilishini ta'minlaydi.- Agar bir nechta goroutinlar
Doni bir vaqtning o'zida chaqirsa, faqat biri funksiyani bajaradi, boshqalar tugashini kutadi.
Misol:
var once sync.Once
func initialize() {
fmt.Println("Boshlang'ich sozlamalar bajarildi")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Goroutinlar tugashini kutish
}
Bu misolda, "Boshlang'ich sozlamalar bajarildi" xabari aniq bir marta chiqariladi.