【问题标题】:NSOperationQueue vs NSOperation vs GCD [duplicate]NSOperationQueue vs NSOperation vs GCD [重复]
【发布时间】:2015-11-15 09:26:21
【问题描述】:

在什么情况下您更愿意使用NSOperationQueueNSOperation 或GCD。 我刚刚开始在线程中工作,那么有什么好处和时间复杂度。 当我们需要使用哪一种,有什么好处,在什么情况下我们需要考虑使用哪一种。

【问题讨论】:

标签: ios grand-central-dispatch nsoperation nsoperationqueue


【解决方案1】:

GCD 是基于 C 的低级 API。

NSOperationNSOperationQueue 是基于 GCD 并简化执行优先级和取消的 Objective-C 类。

NSOperationQueue 相对于 GCD 的优势包括:

  1. 如果操作在队列中,可以很容易地取消或暂停操作,如果它正在运行则可以停止。

  2. 您可以定义最大并发操作数。

  3. 您可以在 NSOperation 的不同实例之间建立依赖关系。

【讨论】:

  • 另外值得一提的是NSOperation内部是基于GCD的,所以选择它不会有任何性能问题。
  • 那么您是否有任何示例示例来演示我们何时需要在哪种情况下使用哪个以及哪个是最好的。
  • Gamex-Re 取消,GCD 现在也支持取消。重新挂起,可以挂起自定义调度队列和操作队列。回复NSOperation 功能,也许我会添加依赖项,将异步任务包装在异步NSOperation 子类中的能力等。
  • @Darshan 调度队列对于低级任务(同步、后台线程计时器、用于将快速后台任务与 UI 解耦的调度源等)是必不可少的。操作队列非常适合您具有依赖关系和/或可能需要限制并发程度的高级操作。对于处于中间地带的绝大多数异步任务,您通常可以安全地使用其中一个,这取决于个人喜好。
  • 在 GCD 和 NSOPration 队列中我仍然有点困惑,所以我希望你能在任何实际情况下解释我@Roman Kabachenko。
猜你喜欢
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 2018-03-25
相关资源
最近更新 更多