我有超过 5 个任务使用 Grand 中央调度异步工作。我如何知道哪个任务将首先完成,哪个任务将最后完成?我的意思是说我如何知道任务完成的顺序?如果我想同时停止任何任务或所有任务,我该如何存档?
最佳答案
How do I know which task will finish first and which will finish last?
你真的不能。异步任务完成后即完成,没有假定或保证的顺序。
I mean to say how do I know the order in which the task will finish?
如果一项任务是另一项任务的子任务,则子任务将首先完成,因为父任务可能取决于子任务的结果。否则,从一般意义上讲,确实没有明确的方法来确定哪个任务将首先完成。 GCD 将根据其认为合适的情况分配时间表和资源。
如果您知道有哪些资源可用,聪明的程序员可以尝试设置队列,以便当一个任务完成时,资源可供另一个类似的任务使用,因此无需等待,但那就是远远超出了这个问题的范围。
如果我想同时停止任何任务或所有任务,我该如何存档?
我猜你指的是实现,而不是存档。
每How to stop/cancel/suspend/resume tasks on GCD queue ,您无法使用 GCD 停止正在运行的一个任务或一组任务。如果您使用 NSOperationsQueue,您可能会做一些可怕的事情,但从技术上讲,它不是 GCD 的一部分。
关于swift - 了解ios中异步工作的GCD任务的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51604359/