Junior — Middle
Можете ли да обясните концепцията за токен за анулиране в контекста на многопоточната програмиране?
sobes.tech AI
Отговор от AI
Токенът за отказ (Cancellation Token) в многопоточната програмиране е обект, който се използва за координиране на отказа на асинхронни или паралелни операции.
Основната идея: един поток (или компонент) може да поиска отказ на операция, а други, които изпълняват тази операция, могат периодично да проверяват състоянието на токена и да приключат правилно, ако е поискана отказ.
В C# това се реализира чрез класовете CancellationToken и CancellationTokenSource:
CancellationTokenSourceсъздава токен и може да сигнализира за отказ.CancellationTokenсе предава към задачи или методи, които могат да проверяватIsCancellationRequestedи да реагират на отказ.
Пример:
var cts = new CancellationTokenSource();
var token = cts.Token;
Task.Run(() => {
while (!token.IsCancellationRequested)
{
// Изпълняваме работа
}
// Почистващи действия и приключване
}, token);
// Някъде в кода извикваме отказ
cts.Cancel();
Това позволява безопасно и контролирано прекъсване на дълги или фонови операции.