Junior — Middle
Izskaidrojiet sync.Once struktūras mērķi un darbības principu Go valodā.
sobes.tech AI
Atbilde no AI
sync.Once Go valodā tiek izmantots, lai nodrošinātu, ka noteikta operācija (piemēram, inicializācija) tiks izpildīta tikai vienreiz, pat ja vairākas gorutinas to vienlaikus izsauc. Tas ir noderīgi gaidošas inicializācijas vai resursu konfigurācijas gadījumā.
Darba princips:
sync.Oncesatur iekšēju karogu, kas seko tam, vai funkcija jau ir izpildīta.- Metode
Do(f func())pieņem funkcijufun garantē, ka tā tiks izsaukta tikai vienreiz. - Ja vairākas gorutinas vienlaikus izsauc
Do, tikai viena no tām izpildīs funkciju, pārējās gaidīs tās pabeigšanu.
Piemērs:
var once sync.Once
func initialize() {
fmt.Println("Inicializācija pabeigta")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Gaidām gorutinas pabeigšanu
}
Šajā piemērā ziņojums "Inicializācija pabeigta" tiks parādīts tieši vienu reizi.