并发编程03

  • 并行和其他技术。把你的代码分布在模块化的代码块中,改进并发量的最好办法。也不是在任何时候任何情况下都是这样。依赖你的任务,有其他的并发办法。
  • OpenCL和并发。OSX,开放计算语言。标准基础技术。执行通用计算在显卡处理器中。是一个好用的技术如果你有一个定义很好的计算集合。想要应用在大量数据上。比如,你可能用OpenCL执行过滤指令在一个图片的像素上,或使用它执行复杂的数学计算一次性。换句话说,OpenCL是一个齿轮,更多的是面向数据能平行的问题。
  • 不适用于通用计算。需要非常大的努力准备和转换两种数据和必须的工作从核心到显卡使得可以被GPU操作。同样的,计算结果的转换也比较麻烦。所以,和系统交互的任务不要用OpenCL,最好是自包含的任务。计算独立。
  • 什么时候用线程?虽然Opreation Queue或dispatch queue是推荐的方法,但是也不是万能药。最好是尽可能少的创建线程,只能用这个线程做特殊的任务。dispatch queue保证尽可能多的执行任务,但是不保证实时约束。如果你需要更多的预先行为在后台运行,最好也是用线程。
  • Opreation Queue。Operation是面向对象的方式包含了你想执行异步的操作。或者是并发在一个队列里,或者是自己执行。因为是基于OC的,所以最常用。
  • Operation对象。一个Operation是一个NSOperation对象。NSOperation是个抽象类,需要子类化。虽然是抽象类,也提供了重大的有意义的操作在你的子类。另外,也提供了两个具体的子类。
  • NSInvocationOpreation
  • NSBlockOpreration
  • NSOperation
  • 所有的Operation对象支持以下的特性。支持在对象间基于图的依赖。一个完成之后执行另一个。支持可选的完成block。支持使用KVO监控执行变化。支持优先级。支持取消语义。
  • Opreation是设计为增强你的并发性的。也是一个好的组织方式,组织包含你的APP的简单独立行为。不是在主线程中执行,而是在异步的后台线程中执行。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容