Многопоточность выполнения нескольких задач параллельно в быстром IOS
Я знаю создание очередей и могу выполнить одну задачу, но как я могу выполнить несколько задач параллельно.
Одновременная очередь ---->
let concurrentQueue = DispatchQueue(label: "com.some.concurrentQueue", attributes: .concurrent)
concurrentQueue.async {
//executable code
}
BackgroundQueue без приоритетов по умолчанию --->
DispatchQueue.global().async {
//executable code
}
Backgroundqueue с приоритетами ---->
DispatchQueue.global(qos: .userInitiated).async { //.userInteractive .background .default .unspecified
//executable code
}
Возвращаемся в главную очередь ---->
DispatchQueue.main.async {
//executable code
}
Все они асинхронные, но как я могу выполнить несколько методов одновременно, как я должен кодировать в Swift.
1 ответ
Если у вас есть метод цикла for, который вызывает метод, и вы хотите вызывать эти методы одновременно, просто используйте это:
DispatchQueue.concurrentPerform(iterations: Int, execute: { (count) in
doSomethingFor(count: count)
}
Но если у вас есть несколько отдельных методов, которые вы хотите вызвать одновременно, просто сделайте так:
let concurrentQueue = DispatchQueue(label: "com.some.concurrentQueue", attributes: .concurrent)
concurrentQueue.async {
//executable code
myFirstMethod()
}
concurrentQueue.async {
//executable code
mySecondMethod()
}
Таким образом, concurrentQueue, будет управлять вашими задачами одновременно.