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 — белгилүү бир убакыт маанилүү болгондо колдонулат.