Junior — Middle
Go-da sync.Once strukturunun məqsədini və iş prinsipini izah edin.
sobes.tech Süni İntellekt
AI-dan cavab
sync.Once in Go istifadə olunur ki, müəyyən bir əməliyyat (məsələn, ilkinləşdirmə) yalnız bir dəfə yerinə yetirilsin, hətta bir neçə goroutine onu eyni zamanda çağırsa belə. Bu, ehtiyatların tərtibində və ya tələsmədən ilkinləşdirmədə faydalıdır.
İş prinsipi:
sync.Oncedaxili bir bayraq saxlayır və funksiyanın artıq icra olunub-olunmadığını izləyir.Do(f func())metodu,ffunksiyasını qəbul edir və onun yalnız bir dəfə çağırılmasını təmin edir.- Əgər bir neçə goroutine
Do-nu eyni zamanda çağırsa, yalnız biri funksiyanı icra edəcək, digərləri isə tamamlanmasını gözləyəcək.
Nümunə:
var once sync.Once
func initialize() {
fmt.Println("İlkinləşdirmə tamamlandı")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Goroutine-lərin tamamlanmasını gözləyir
}
Bu nümunədə, "İlkinləşdirmə tamamlandı" mesajı dəqiq bir dəfə göstəriləcək.