Ответ
Да, напрямую создать поток можно с помощью класса Thread. Однако в современной iOS/macOS разработке предпочтительнее использовать высокоуровневые абстракции — Grand Central Dispatch (DispatchQueue) или OperationQueue.
1. Прямое создание потока (Thread):
let customThread = Thread {
print("Выполняюсь в кастомном потоке: (Thread.current)")
// Долгая или блокирующая задача
}
customThread.name = "MyBackgroundThread"
customThread.start()
Недостатки: Требует ручного управления жизненным циклом, сложнее избежать race conditions и утечек.
2. Предпочтительный способ — DispatchQueue (GCD):
// Создание серийной очереди (задачи выполняются по одной)
let serialQueue = DispatchQueue(label: "com.app.serialQueue")
serialQueue.async {
print("Задача в серийной очереди")
}
// Использование глобальной параллельной очереди
DispatchQueue.global(qos: .userInitiated).async {
let result = performHeavyCalculation()
DispatchQueue.main.async {
// Обновление UI в главном потоке
self.updateUI(with: result)
}
}
Почему лучше: GCD автоматически управляет пулом потоков, обеспечивает эффективное использование ресурсов CPU и предоставляет простой API для синхронизации.