Sobes.tech
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():
    // убакыт өттү же токтотуу
}

Ушул жол менен, эгер натыйжа убагында келбесе, иштөө үзүлүп, убакыт чектөө башкарылат.