Ответ
Конкурентность (Concurrency) — это концепция одновременного выполнения нескольких задач. В iOS задачи могут выполняться параллельно на разных ядрах CPU или псевдопараллельно (с быстрым переключением контекста) на одном ядре. Основные инструменты: Grand Central Dispatch (GCD), OperationQueue и async/await.
Пример с очередью GCD:
let concurrentQueue = DispatchQueue(label: "com.example.queue", attributes: .concurrent)
concurrentQueue.async {
print("Задача 1 началась")
sleep(1)
print("Задача 1 завершилась")
}
concurrentQueue.async {
print("Задача 2 началась")
sleep(2)
print("Задача 2 завершилась")
}
// Вывод может быть: "Задача 1 началась", "Задача 2 началась", "Задача 1 завершилась", "Задача 2 завершилась"
Важные аспекты:
- Порядок выполнения конкурентных задач не гарантирован.
- Время выполнения задач может перекрываться.
- Доступ к общим ресурсам (память, файлы) требует синхронизации (например, с использованием
DispatchQueue.barrier, семафоровDispatchSemaphoreили акторов).