如何在后台线程中顺序运行任务

时间:2020-07-23 14:50:09

标签: swift asynchronous dispatch-queue

我有一个数据同步,应该在后台线程中按顺序进行同步,因为一个任务需要先完成才开始同步下一个任务。我尝试在调度队列中执行。但是随后,当流程调度程序决定要执行什么时,我遇到了很多问题。我的部分代码如下。

127.0.0.1:9150

1 个答案:

答案 0 :(得分:0)

要在后台线程(或主线程以外的任何线程)中运行函数,可以尝试创建自定义队列。

例如:

let myQueue = DispatchQueue(label: "serial") // DispatchQueue is serial by default
myQueue.asyc {
    // 1st function
}
myQueue.asyc {
    // 2nd function
}

串行DispatchQueue确保按添加顺序调用添加到其中的功能。

但是,如果希望第二个函数等待第一个函数的结果,则可以例如在每个函数中添加一个completionHandler以在完成后调用下一个函数:

func doSomething(completionHandler: () -> Void) {
    // do something
    // ...
    // call completionHandler when everything is finished
    completionHandler()
}

或使用DispatchGroup通知每个作业何时完成。这实际上取决于您的任务的复杂性。 (此外,Operation API也是处理并发任务的灵活工具。)