我在GCD和线程方面非常新手。我已经阅读了教程,但是感到非常困惑。 有人能用简单的话解释一下吗?请不要建议苹果开发者链接。
提前致谢!
我在GCD和线程方面非常新手。我已经阅读了教程,但是感到非常困惑。 有人能用简单的话解释一下吗?请不要建议苹果开发者链接。
提前致谢!
NSOperationQueue(操作队列)适用于需要长时间运行、可能需要取消或具有复杂依赖关系的操作。GCD(Grand Central Dispatch,调度中心)分派队列则更适合执行短期任务,且需要最小化性能和内存开销。
可以取消已在NSOperationQueue(操作队列)中排队的操作(只要操作本身支持取消)。将块(block)排队在GCD(Grand Central Dispatch,调度中心)分派队列中时,它一定会在某个时间点被执行。
查看下面的链接,它可能对你有所帮助。
调度队列基于先进先出(FIFO)的概念工作,而操作则不是。
对于操作,我们可以通过定义它们的优先级来优先执行特定的任务,从而对它们进行控制,例如哪个任务首先执行,哪个任务最后执行。
通过将名为“queuePriority”的属性设置为非常低、低、正常、高、非常高等级别,可以实现这一点,许多其他类似的操作也可以使用操作完成,而不能使用调度队列。
使用操作无法按顺序执行任务,因为它们默认是并发的,但是通过使操作之间相互依赖,例如操作2依赖于操作1,而操作3依赖于操作2,因此它们将按顺序执行。
GCD
比 NSOperationQueue
更低级,其主要优势在于其实现非常轻量级且专注于无锁算法和性能。
一般来说,您应该使用最适合您需求的最高抽象级别。这意味着您通常应该使用 NSOperationQueue
而不是 GCD
。 NSOperationQueue
可以让您更好地控制操作的执行方式。