swift - 了解ios中异步工作的GCD任务的顺序

标签 swift multithreading

我有超过 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/

相关文章:

ios - 没有这样的模块 'EVReflection'

ios - 如何获取特定的标签帖子(更新)

multithreading - 在多线程中使用没有 Arc 的 Mutex 是否安全?

xml - 使用 XDocument.Load 的多线程

java - 多个 DefaultMessageListenerContainer 提供单个 TaskExecutor/ThreadPool(公平地)

C++ 线程 : terminate called without an active exception

ios - 将 Swift 协议(protocol)作为另一个协议(protocol)函数的参数传递

当设备倾斜到横向时 iOS 应用程序崩溃

ios - TableViewController numberOfRowsInSection 部分

c++ - 线程安全流和流操纵器