Junior — Middle
Czy możesz wyjaśnić koncepcję tokena anulowania w kontekście programowania wielowątkowego?
sobes.tech AI
Odpowiedź od AI
Token anulowania (Cancellation Token) w programowaniu wielowątkowym to obiekt używany do koordynacji anulowania operacji asynchronicznych lub równoległych.
Główny pomysł: jeden wątek (lub komponent) może zażądać anulowania operacji, a inne, wykonujące tę operację, mogą okresowo sprawdzać stan tokena i poprawnie kończyć pracę, jeśli anulowanie zostanie zażądane.
W C# jest to realizowane za pomocą klas CancellationToken i CancellationTokenSource:
CancellationTokenSourcetworzy token i może sygnalizować anulowanie.CancellationTokenjest przekazywany do zadań lub metod, które mogą sprawdzaćIsCancellationRequestedi reagować na anulowanie.
Przykład:
var cts = new CancellationTokenSource();
var token = cts.Token;
Task.Run(() => {
while (!token.IsCancellationRequested)
{
// Wykonuj pracę
}
// Sprzątanie i zakończenie
}, token);
// Gdzieś w kodzie wywołujemy anulowanie
cts.Cancel();
To pozwala bezpiecznie i kontrolowanie przerywać długie lub tło operacje.