Sobes.tech
Junior — Middle

Ishga tushirish vaqtini nazorat qilish kontekstida WithTimeout funktsiyasi bilan WithDeadline funktsiyasi o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Go'da WithTimeout va WithDeadline funksiyalari vaqt cheklovi bilan kontekst yaratish uchun ishlatiladi, ammo bu cheklovni belgilash usuli bilan farq qiladi:

  • WithTimeout(parent, timeout) hozirgi vaqtdan boshlab timeout vaqt o'tgach avtomatik ravishda bekor qilinadigan kontekst yaratadi. Ya'ni, taymer chaqirilgan vaqtda boshlanadi.

  • WithDeadline(parent, deadline) ma'lum bir vaqtda, deadline (tip time.Time) bo'lgan kontekst yaratadi. Bu, kontekstning aniq qachon tugashini belgilash imkonini beradi.

Misol:

ctx1, cancel1 := context.WithTimeout(context.Background(), 5*time.Second)
// ctx1 hozirdan 5 sekund o'tgach bekor qilinadi

deadline := time.Now().Add(5 * time.Second)
ctx2, cancel2 := context.WithDeadline(context.Background(), deadline)
// ctx2 aniq deadline vaqtida bekor qilinadi

Shu sababli, WithTimeout davomiylikni belgilash uchun qulay, WithDeadline esa aniq vaqtda muhim bo'lgan holatlar uchun foydalidir.