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();
Ово омогућава безбедно и контролисано прекидање дуготрајних или позадинских операција.