Sobes.tech
Junior — Middle

Context.WithTimeout функциясы эмне үчүн эки маанини кайтарат жана алар убакыт чектөөлөрүн иштетүү контекстинде кандай колдонулат?

sobes.tech AI

AIден жооп

Go тилинде context.WithTimeout функциясы эки маанини кайтарат:

  1. Жаңы контекст (Context), ал белгиленген убакыт өткөндөн кийин автоматтык түрдө жокко чыгат.
  2. Жокко чыгуу функциясы (CancelFunc), аны контекст менен ишти алдын ала аяктоо үчүн чакырса болот.

Колдонуу:

  • Жаңы контекст операциялардын иштөө убактысын көзөмөлдөө үчүн колдонулат: эгер убакыт өтүп кетсе, контекст жокко чыгат жана байланышкан операциялар жокко чыгуу сигналын алат.
  • Жокко чыгуу функциясы ресурстарды бошотуу үчүн чакырылат, эгер операция убакыттан эрте аяктап калса.

Мисал:

timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // ресурстарды бошотуу кепилдиги

select {
case <-doWork(timedCtx):
    fmt.Println("Иш аяктады")
case <-timedCtx.Done():
    fmt.Println("Убакыт өттү же жокко чыгарылды")
}

Ушул жол менен, кайтарылган маанилер убакыт чектөөсүн коюуга жана операцияларды жокко чыгарууну көзөмөлдөөгө мүмкүндүк берет.