Способы достижения многопоточности в iOS и macOS
Суть
Четыре уровня абстракции, от низкого к высокому:
Thread/ pthread — ручное управление потоками. Вы сами решаете, сколько их создать, как синхронизировать и когда завершить. Дорого (стек ~512 КБ, переключения контекста) и плохо масштабируется; в прикладном коде почти не используется.- GCD (
DispatchQueue) — очереди задач поверх системного пула потоков. Вы описываете задачу и кладёте её в очередь, число потоков подбирает система. Serial/concurrent очереди, QoS,DispatchGroup, barrier. OperationQueue/Operation— ObjC-обёртка над GCD с объектами-задачами: зависимости между операциями, отмена,maxConcurrentOperationCount, KVO-состояния. Удобна для графов зависимостей и отменяемых пайплайнов.- Swift Concurrency (
async/await,Task,actor) — языковая модель с iOS 15. Структурированная конкуренция, кооперативная отмена, компилятор проверяет гонки данных (Swift 6). Основной выбор для нового кода в 2026 году.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep