Junior — Middle
Care este rolul metodei Context.Done în gestionarea finalizării operațiunilor asincrone?
sobes.tech AI
Răspuns de la AI
Metoda Context.Done() returnează un canal care se închide atunci când contextul este anulat sau timpul său expiră. Acest lucru permite operațiunilor asincrone să detecteze semnalul de finalizare și să se întrerupă corect.
De exemplu, într-o goroutine, poți asculta acest canal și să finalizezi munca la anularea contextului:
ctx, cancel := context.WithCancel(context.Background())
go func() {
select {
case <-ctx.Done():
// Contextul a fost anulat, se finalizează
return
case data := <-dataCh:
// Procesarea datelor
}
}()
// Mai târziu, se apelează cancel() pentru a opri goroutine-ul
cancel()
Astfel, Context.Done() servește ca un semnal pentru finalizarea sigură și oportună a operațiunilor asincrone.