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 boshlabtimeoutvaqt o'tgach avtomatik ravishda bekor qilinadigan kontekst yaratadi. Ya'ni, taymer chaqirilgan vaqtda boshlanadi. -
WithDeadline(parent, deadline)ma'lum bir vaqtda,deadline(tiptime.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.