Многопоточность выполнения нескольких задач параллельно в быстром 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, будет управлять вашими задачами одновременно.

Другие вопросы по тегам