【问题标题】:Multithreading executing multiple tasks in parallel in swift ios多线程在swift ios中并行执行多个任务
【发布时间】:2018-10-07 02:55:44
【问题描述】:

我知道队列的创建并且能够执行单个任务,但是我如何并行执行多个任务。

并发队列---->

let concurrentQueue = DispatchQueue(label: "com.some.concurrentQueue", attributes: .concurrent)
concurrentQueue.async {
    //executable code

}

默认没有优先级的BackgroundQueue--->

DispatchQueue.global().async {
    //executable code
}

具有优先级的后台队列---->

DispatchQueue.global(qos: .userInitiated).async { //.userInteractive .background .default .unspecified
    //executable code
}

回到主队列---->

DispatchQueue.main.async {
     //executable code
}

所有都是异步的,但是我如何一次执行多个方法我应该如何快速编码。

【问题讨论】:

  • 请不要试图通过编辑问题文本来删除您的问题。如果您有正当理由希望删除该问题,您应该向版主或网站管理员寻求帮助,请参阅meta.stackoverflow.com/questions/305484/… 了解更多信息。

标签: ios swift multithreading swift4 dispatch-queue


【解决方案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,将自己同时管理你的任务。

【讨论】:

  • DispatchQeue 很难处理这个问题。相反,您可以使用OperationOperationQeueu。在这种情况下,您可以设置您想要的最大并发任务。
  • 这里不再赘述,但如果你想要一个很好的教程,只需看看这个教程:appcoda.com/ios-concurrency
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 2014-08-26
相关资源
最近更新 更多