Добавить объявление

Как запустить поток в Swift: основные способы

В Swift есть несколько подходов для работы с потоками и асинхронными задачами. Вот ключевые методы:

Grand Central Dispatch (GCD) - DispatchQueue:


Позволяет легко выполнять код в фоне или на главном потоке.

// Фоновый поток
DispatchQueue.global().async {
// Тяжелые вычисления или сетевые запросы
DispatchQueue.main.async {
// Обновляем UI (только в главном потоке!)
}
}

Swift Concurrency (Task, async/await):


Современный способ для асинхронного кода.

Task {
// Асинхронная работа
let result = await networkRequest()

await MainActor.run {
// Обновляем UI (только в главном потоке!)
updateUI(with: result)
}
}

...

@MainActor
private func updateUI(with result: String) {
}

OperationQueue:


Для сложных зависимостей между задачами.

let queue = OperationQueue()
queue.addOperation {
// Фоновая задача
}

Важные правила:


  • UI-обновления: только в главном потоке (DispatchQueue.main), @MainActor.

  • Глобальные очереди (global()): для CPU-интенсивных задач.

  • Асинхронность (async): чтобы не блокировать текущий поток.

Когда что использовать:


  • DispatchQueue: для простых фоновых задач.

  • Task: для современного асинхронного кода (с async/await).

  • OperationQueue: для сложных цепочек операций.

Вывод:


Выбирайте инструмент под задачу, но всегда помните о потокобезопасности!
13.09.2025 13 444