Junior — Middle
Objasnite svrhu i princip rada strukture sync.Once u Go.
sobes.tech АИ
Одговор од АИ
sync.Once u Go jeziku koristi se za garantovanje da će određena operacija (npr. inicijalizacija) biti izvršena tačno jednom, čak i ako je više gorutina pozove istovremeno. Ovo je korisno za lenju inicijalizaciju ili podešavanje resursa.
Princip rada:
sync.Oncesadrži internu zastavicu koja prati da li je funkcija već izvršena.- Metod
Do(f func())prihvata funkcijufi garantuje da će biti pozvana samo jednom. - Ako više gorutina pozove
Doistovremeno, samo jedna će izvršiti funkciju, ostale će čekati da se ona završi.
Primer:
var once sync.Once
func initialize() {
fmt.Println("Inicijalizacija završena")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Čekamo da gorutine završe
}
U ovom primeru, poruka "Inicijalizacija završena" biće prikazana tačno jednom.