Всем привет, с вами все также Никита, мы продолжаем разбираться в асинхронном Swift! Прежде чем разбираться с этой статьей настоятельно рекомендуем прочитать предыдущие:
Проблемы Swift 5.4
Как работает Coroutine Model
Новые синтаксические конструкции языка Swift
В рамках этой статьи мы познакомимся с тем, как писать зависящие друг от друга асинхронные задачи, познакомимся с Task поближе и разберем несколько интересных примеров, погнали!
Содержание
Подробнее про Task
Структурированные задачи
Parallelism
Async let
Task Group
Вместо вывода
Task
В прошлой статье мы уже определились с тем, что такое Task, напомню:
Task - это базовая единица concurrency в системе. Каждая асинхронная функция выполняется в рамках задачи (task-и). Здесь Apple проводит аналогию с `Thread` : `Task` для асинхронной функции то же самое, что `Thread` для синхронной.
Из приведенной аналогии можно понять, что Task - это некий контекст асинхронной функции. Она может содержать всю информацию о своем исполнении, стеке вызова. С ее помощью мы можем выполнять разные задачи, не меняя Thread, потому что контекст для любой асинхронной задачи уже не Thread, а Task.
У каждой задачи (Task) может быть 3 состояния:
Running
