Sobes.tech
Junior — Middle

Hogyan lehet megállítani egy goroutine végrehajtását egy adott idő elteltével, ha nem érkezett eredmény?

sobes.tech MI

Válasz az MI-től

Go nyelvben a gorutina végrehajtásának leállításához egy adott idő elteltével általában select-et használunk időzítővel vagy időkorlátos kontextussal.

Példa time.After-rel:

select {
case result := <-ch:
    // eredmény feldolgozása
case <-time.After(2 * time.Second):
    // időtúllépés — az eredményt nem kaptuk meg 2 másodpercen belül
}

Példa kontextussal:

ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

select {
case result := <-ch:
    // eredmény feldolgozása
case <-ctx.Done():
    // időtúllépés vagy leállítás
}

Így, ha az eredmény nem érkezik meg időben, a végrehajtást megszakíthatjuk és kezelhetjük az időtúllépést.