美文网首页
第43条:掌握GCD及操作队列的使用时机

第43条:掌握GCD及操作队列的使用时机

作者: MrSYLong | 来源:发表于2018-10-14 21:57 被阅读5次

GCD技术确实很棒,不过有时候采用标准系统库的组件,效果会更好。

GCD技术的同步机制非常优秀,对于那些只需执行一次的代码来说,使用GCD最方便。但在执行后台任务时,还可以使用操作队列(NSOperationQueue)。

操作队列的底层是用GCD来实现的。

两者的差别:GCD是纯C的API,而操作队列是Objective-C的对象。GCD中,任务用块来表示,是一个轻量级的数据结构,而操作(NSOperation)则是个更为重量级的Objective-C对象。

操作队列的优势:

  1. 运行任务之前,可以在NSOperation对象上调用cancel方法,即可取消操作,不过,已经启动的任务无法取消,而GCD把块安排到队列就无法取消。
  2. 可以指定操作间的依赖关系,使特定操作必须在另一个操作执行完毕后方可执行。
  3. 可以通过KVO(键值观察)来监控NSOperation对象的属性变化(isCancelled,isFinished等)
  4. 可以指定操作的优先级
  5. 可以通过重用NSOperation对象来实现更丰富的功能

在解决多线程与任务管理问题时,派发队列并非唯一方案。

操作队列提供一套高级API,能实现纯GCD所具备的绝大部分功能,而且还能完成一些更为复杂的操作,那些操作若改用GCD来实现,则需另外编写代码。

相关文章

网友评论

      本文标题:第43条:掌握GCD及操作队列的使用时机

      本文链接:https://www.haomeiwen.com/subject/zbntzftx.html