Junior — Middle
შეგიძლიათ ახსნათ 'Once' კონცეფცია Go ენისა და რა შემთხვევებში გამოიყენება?
sobes.tech AI
პასუხი AI-სგან
Go լեզվում, sync.Once կառուցվածքը երաշխավորում է, որ որոշակի ֆունկցիա կիրականացվի միայն մեկ անգամ, նույնիսկ եթե կանչը կատարվում է միաժամանակ մի քանի goroutine-ներից: Սա օգտակար է ռեսուրսների սկզբնականացման համար, որոնք պետք է ստեղծվեն միայն մեկ անգամ, օրինակ՝ կապ հաստատել տվյալների բազայի հետ կամ բեռնել կոնֆիգուարացիան:
Օգտագործման օրինակ:
var once sync.Once
func initialize() {
fmt.Println("Սկզբնականացումը ավարտված է")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // սպասում ենք goroutine-ների ավարտին
}
Այս օրինակով, initialize ֆունկցիան կկոչվի միայն մեկ անգամ, անկախ goroutine-ների թվից: