Sobes.tech
Back to questions
Junior — Middle
65

Можете объяснить концепцию токена отмены в контексте многопоточного программирования?

Answer from AI

sobes.tech 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();

Это позволяет безопасно и контролируемо прерывать долгие или фоновые операции.