🐥 Swift. Структурированные и неструктурированные задачиОтличный разбор структурированных и неструктурированных задач. Структурированные присоединяются к текущей древовидной структуре задач, а неструктурированные запускают новую древовидную структуру задач.
Родительские и дочерние задачи
🔵Родительская задача порождает дочерние задачи.
🔵Дочерние задачи возвращают результаты родительской задаче.
Древовидная структура задач
🔵Родительские и дочерние задачи образуют единое целое.
🔵Структурированные задачи могут быть дочерними или родительскими.
🔵Неструктурированные задачи могут быть только корневыми узлами.
Завершение задач и групповое завершение
🔵Целевая группа завершает свои дочерние задачи, когда выполнение завершает закрытие группы задач.
🔵Родительская задача может завершиться после завершения целевой группы.
🔵Вложенные неструктурированные задачи не вызывают внешнюю задачу для ожидания завершения. Они ведут себя как "запусти и забудь".
Правило групповой отмены
🔵Если родительская задача отменена, все её дочерние задачи также отменяются.
🔵Отмена задачи не приводит к её остановке, а указывает на то, что результаты не понадобятся.
Правило распространения ошибок
🔵Если ошибка распространяется за пределы локальной области, все дочерние задачи неявно отменяются и неявно ожидаются.
🔵Ошибки распространяются только из задач, которые явно ожидаемы.
Наследование контекста
🔵Неструктурированные задачи наследуют приоритет задачи и локальные значения задачи.
🔵Структурированные задачи не наследуют изоляцию участников от контекста, в котором они созданы.