Sobes.tech
Junior — Middle

Иштөө убактысын көзөмөлдөө контекстинде WithTimeout функциясынын менен WithDeadline функциясынын айырмасы эмнеде?

sobes.tech AI

AIден жооп

Go'да WithTimeout жана WithDeadline функциялары убакыт чектөө менен контекст түзүү үчүн колдонулат, бирок бул чектөөнү белгилөө ыкмасы менен айырмаланат:

  • WithTimeout(parent, timeout) учурда, учурдагы убактан timeout убакыт өткөндөн кийин автоматтык түрдө жокко чыгат. Башкача айтканда, таймер чакырылгандан кийин башталат.

  • WithDeadline(parent, deadline) белгилүү бир убакта, deadline (тип time.Time) контекстти жокко чыгарат. Бул контексттин так качан аяктоо керектигин аныктоого мүмкүндүк берет.

Мисал:

ctx1, cancel1 := context.WithTimeout(context.Background(), 5*time.Second)
// ctx1 азыртан 5 секунд өткөндөн кийин жокко чыгат

deadline := time.Now().Add(5 * time.Second)
ctx2, cancel2 := context.WithDeadline(context.Background(), deadline)
// ctx2 так deadline убакта жокко чыгат

Ошондуктан, WithTimeout узактыкты белгилөө үчүн пайдалуу болсо, WithDeadline — белгилүү бир убакыт маанилүү болгондо колдонулат.