Sobes.tech
Junior — Middle

Можете ли објаснити концепт токена за отказивање у контексту мултитредног програмирања?

sobes.tech АИ

Одговор од АИ

Токен за отказ (Cancellation Token) у мулти-тред програмирању је објекат који се користи за координацију отказа асинхроних или паралелних операција.

Главна идеја: један ток (или компонента) може затражити отказ операције, а други који извршавају ту операцију могу периодично проверавати стање токена и исправно завршити ако је захтевано отказивање.

У C#-у, ово се реализује кроз класе CancellationToken и CancellationTokenSource:

  • CancellationTokenSource креира токен и може сигнализирати отказ.
  • CancellationToken се преноси у задатке или методе који могу проверавати IsCancellationRequested и реаговати на отказ.

Пример:

var cts = new CancellationTokenSource();
var token = cts.Token;

Task.Run(() => {
    while (!token.IsCancellationRequested)
    {
        // Извршавање посла
    }
    // Чишћење и завршетак
}, token);

// Некада у коду, позивамо отказ
cts.Cancel();

Ово омогућава безбедно и контролисано прекидање дуготрајних или позадинских операција.