Junior — Middle
რატომ აბრუნებს ფუნქცია Context.WithTimeout ორი მნიშვნელობას და როგორ გამოიყენება ისინი დროის შეზღუდვების მართვის კონტექსტში?
sobes.tech AI
პასუხი AI-სგან
Go тилиндеги context.WithTimeout функциясы эки маанини кайтарат:
- Жаңы контекст (
Context), ал белгиленген убакыт өткөндөн кийин автоматтык түрдө жокко чыгат. - Жокко чыгуу функциясы (
CancelFunc), аны контекст менен ишти алдын ала аяктоо үчүн чакырса болот.
Колдонуу:
- Жаңы контекст операциялардын иштөө убактысын көзөмөлдөө үчүн колдонулат: эгер убакыт өтүп кетсе, контекст жокко чыгат жана байланышкан операциялар жокко чыгуу сигналын алат.
- Жокко чыгуу функциясы ресурстарды бошотуу үчүн чакырылат, эгер операция убакыттан эрте аяктап калса.
Мисал:
timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // ресурстарды бошотуу кепилдиги
select {
case <-doWork(timedCtx):
fmt.Println("Иш аяктады")
case <-timedCtx.Done():
fmt.Println("Убакыт өттү же жокко чыгарылды")
}
Ушул жол менен, кайтарылган маанилер убакыт чектөөсүн коюуга жана операцияларды жокко чыгарууну көзөмөлдөөгө мүмкүндүк берет.