Эскалация приоритета: наблюдать и реагировать 👿
🔥 SE-0462 (Swift 6.2) даёт увидеть момент, когда рантайм сам поднимает приоритет задачи — и поднять его вручную.
⚠️ Поправка к тому, что обычно показывают: escalatePriority(to:) — это метод экземпляра на Task и UnsafeCurrentTask. Ни на TaskGroup его нет, ни в статической форме escalatePriority(of:to:), которая фигурирует в тексте пропозала. В стандартной библиотеке у withTaskPriorityEscalationHandler два параметра: operation и onPriorityEscalated, замыкание получает (старый, новый). Что стоит знать перед использованием. Эскалация односторонняя: приоритет можно только повысить, понижение не поддерживается. Обработчик @Sendable и выполняется параллельно с операцией из произвольного контекста. Он может сработать несколько раз. И он гоночный: всё, что успело эскалироваться до его установки, вы не увидите.
💡 Документация стандартной библиотеки сама пишет, что этот API «should rarely be used» — обычно правильный ответ просто await. Это инструмент для диагностики инверсии приоритетов, а не для повседневного кода.
#Swift #SwiftConcurrency #Performance #iOSDevelopment #AsyncAwait