我有5个以上的任务使用Grand Central Dispatch异步工作。我怎么知道哪个任务将首先完成,而哪个任务将最后完成?我的意思是说我如何知道任务完成的顺序?而且,如果我想同时停止任何任务或所有任务,该如何存档?
1 个答案:
答案 0 :(得分:0)
我怎么知道哪个任务将首先完成,而哪个任务将最后完成?
你真的不行异步任务在完成时完成,没有假定的顺序或没有保证的顺序。
我的意思是说我如何知道任务完成的顺序?
如果一项任务是另一项任务的子项,则该子项将首先完成,因为父项可能会取决于该子项的结果。否则,从一般意义上讲,实际上没有确定先完成哪个任务的确定方法。 GCD将分配时间表和它认为合适的资源。
如果您知道有哪些可用资源,那么精明的程序员可以尝试设置队列,以便在一个任务完成时将资源提供给另一个类似的任务,因此无需等待,但这远远超出了此范围题。
而且,如果我想同时停止任何任务或所有任务,该如何存档?
我想你的意思是成就,而不是存档。
根据如何在GCD队列上停止/取消/暂停/恢复任务,您无法使用GCD停止一个任务或正在运行的任务组。如果使用NSOperationsQueue,则可以做可怕的事情,但是从技术上讲,它不是GCD的一部分。