Sobes.tech
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-ների թվից: