CONCURRENCY

Многопоточность в iOS

Важнее всего не путать понятия параллелизма и многопоточности, хоть они и близко связаны.

Параллелизм имеет место тогда, когда мы имеем дело с multi-core девайсами. Каждое ядро одновременно и независимо занимается своими тасками.


Daria Korneichuk
iOS Developer
Однако параллелизм необязателен для многопочности. Для одноядерных девайсов многопоточная среда создается через переключение контекстов. Ядро выполняет одну задачу какое-то время, потом переключается на другую задачу или процесс, затем снова переключается на предыдущую, пока задача не будет выполнена.
Рассмотрим высокоуровневые способы достижения многопоточности в iOS.

Во-первых, это библиотека GCD. Grand Central Dispatch — это библиотека представленная в 2009 году компанией Apple, написана на чистом С, впоследствии переписана на Swift 3.0.

Есть два типа очереди в GCD:

  1. serial (последовательная)
  2. concurrent

В serial очереди таски выполняются по порядку, последовательно. Одна задача началась, выполняется, закончилась, только после этого начинается выполение второй.

В concurrent очередях задачи стартуют в порядке добавления. При этом какое количество тасков выполняется одновременно и время их выполнения неизвестно. Мы не можем как-то влиять на это поведение.
Когда очередь создана, задание можно разместить на ней с помощью двух функций: sync — синхронное выполнение по отношению к текущей очереди и async — асинхронное выполнение.
Made on
Tilda