Junior — Middle
Чӣ гуна метавон иҷрои goroutine-ро пас аз вақти муайян қатъ кард, агар натиҷа гирифта нашуда бошад?
sobes.tech AI
Ҷавоб аз AI
Дар Go барои боздошти иҷрои goroutine пас аз гузашти вақти муайян одатан select бо таймер ё контекст бо вақти маҳдуд истифода мешавад.
Масалан бо time.After:
select {
case result := <-ch:
// коркарди натиҷа
case <-time.After(2 * time.Second):
// вақти тамом — натиҷа дар 2 сония гирифта нашуд
}
Масалан бо контекст:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-ch:
// коркарди натиҷа
case <-ctx.Done():
// вақти тамом ё бекоркунӣ
}
Ин тариқ, агар натиҷа дар вақти лозим нарасад, иҷро кардан мумкин аст қатъ ва вақти тамомӣ идора карда шавад.