Sobes.tech
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:

  • CancellationTokenSource tworzy token i może sygnalizować anulowanie.
  • CancellationToken jest przekazywany do zadań lub metod, które mogą sprawdzać IsCancellationRequested i 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.