【问题标题】:To know order of GCD task working asynchronously in ios了解在 ios 中异步工作的 GCD 任务的顺序
【发布时间】:2018-07-31 01:39:10
【问题描述】:

我有超过 5 个使用 Grand Central 调度异步工作的任务。我如何知道哪个任务将首先完成,哪个任务将最后完成?我的意思是说我怎么知道任务完成的顺序?如果我想同时停止任何任务或所有任务,我该如何存档?

【问题讨论】:

  • 用相关代码更新您的问题(作为文本,没有图片)。清楚地解释您在使用代码时遇到的问题。

标签: swift multithreading


【解决方案1】:

我如何知道哪个任务先完成,哪个任务最后完成?

你真的不能。异步任务在完成时完成,没有假定或保证的顺序。

我的意思是说我怎么知道任务完成的顺序?

如果一项任务是另一项任务的子任务,则子任务将首先完成,因为父任务可能取决于子任务的结果。否则,在一般意义上,确实没有明确的方法来确定哪个任务将首先完成。 GCD 将按其认为合适的方式分配时间表和资源。

如果你知道什么资源是可用的,聪明的程序员可以尝试设置队列,这样当一个任务完成时,资源可以被另一个类似的任务使用,所以没有等待,但那是远远超出了这个问题的范围。

如果我想同时停止任何任务或所有任务,我该如何存档?

我想你的意思是实现,而不是存档。

根据How to stop/cancel/suspend/resume tasks on GCD queue,您无法使用 GCD 停止正在运行的任务或任务组。如果你使用 NSOperationsQueue,你可以做一些可怕的事情,但技术上它不是 GCD 的一部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2017-08-30
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多