Многопоточность выполнения нескольких задач параллельно в быстром IOS - PullRequest
0 голосов
/ 26 апреля 2018

Я знаю создание очередей и могу выполнить одну задачу, но как я могу выполнить несколько задач параллельно.

Параллельная очередь ---->

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 Ответ

0 голосов
/ 26 апреля 2018

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

...