Прямой отмены синхронных задач (заблокировавших текущий поток) без прерывания выполнения потока нет.
Для имитации отмены синхронной задачи можно использовать следующие подходы:
Регулярная проверка флага отмены: Добавить в логику синхронной задачи проверку булевого флага, который устанавливается извне при необходимости отмены. Если флаг установлен, задача завершается досрочно.
swift
Использование try? Task.checkCancellation() в асинхронном контексте:
Если синхронная задача выполняется внутри Task в асинхронном контексте Swift Concurrency, можно периодически вызывать try? Task.checkCancellation(). В случае отмены Task, этот вызов выбросит CancellationError.
swift