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.