Ответ
Одновременно (параллельно) может выполняться количество потоков, равное количеству физических ядер процессора устройства. На современных iPhone это обычно от 2 до 8 ядер.
Важные уточнения:
- Главный поток (Main Thread) только один и зарезервирован для обновления UI.
- Системные фреймворки (GCD,
OperationQueue) управляют параллелизмом, создавая оптимальное количество потоков в своих пулах. - Можно создать больше потоков, чем ядер, но они не будут выполняться параллельно — система будет переключать контекст между ними, что создает накладные расходы.
Пример создания фонового потока с помощью GCD:
// Задача выполняется на фоновом потоке из глобальной очереди
DispatchQueue.global(qos: .userInitiated).async {
// Выполнение тяжелой операции (парсинг, вычисления)
// Возврат результата на главный поток для обновления UI
DispatchQueue.main.async {
self.updateUI(with: result)
}
}
Рекомендация: Не создавайте потоки вручную (Thread). Используйте высокоуровневые API — Grand Central Dispatch (GCD) или OperationQueue, которые эффективно используют доступные ядра.