Sobes.tech
Junior — Middle

Cum se poate opri execuția unei goroutine după un timp specificat dacă rezultatul nu a fost primit?

sobes.tech AI

Răspuns de la AI

În Go, pentru a opri execuția unei goroutine după un timp specificat, se folosește de obicei select cu un temporizator sau un context cu timeout.

Exemplu cu time.After:

select {
case result := <-ch:
    // procesarea rezultatului
case <-time.After(2 * time.Second):
    // timeout — rezultatul nu a fost primit în 2 secunde
}

Exemplu cu context:

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

select {
case result := <-ch:
    // procesarea rezultatului
case <-ctx.Done():
    // timeout sau anulare
}

Astfel, dacă rezultatul nu sosește la timp, execuția poate fi întreruptă și timeout-ul gestionat.