GCD

异步技术有两个:

 Grand Central Dispatch(GCD):系统管理线程,你不需要编写线 程代码。只需定义想要执行的任务,然后添加到适当的 dispatch queue。GCD 会负责创建线程和调度你的任务。系统直接提供线 程管理,比应用实现更加高效。

 Operation Queue:Objective-C 对象,类似于 dispatch queue。你 定义想要执行的任务,并添加任务到 operation queue,后者负责 调度和执行这些任务。和 GCD 一样,Operation Queue 也管理了 线程,更加高效。 

Dispatch Queue 是基于 C 的执行自定义任务机制。 

dispatch queue 总是按先进先出的顺序执 行任务 ,operation queues 执行任务时还要根据依赖度等因素来决定执行的顺序。

operations先满足依赖关系,然后再根据优先级从所有 准备好的操作中选择优先级最高的那个执行。 

串行化的 operation queue 并不等同于 GCD 中的串行 dispatch queue。 

从技术角度来看,并发是程序的属性,而并行运作是机器的属性。并行和并发是两种分开的概念。作为程序员,你不能保证你的代码会在能并行执行你的代码的机器上运行。然而,你可以设计你的代码,让它使用并发操作。

 

NSOperation 类有一个相当简短的声明。要定制一个操作,可以遵循以下步骤:

1.继承NSOperation类

2.重写“main”方法

3.在“main”方法中创建一个“autoreleasepool”

4.将你的代码放在“autoreleasepool”中

创建你自己的自动释放池的原因是,你不能访问主线程的自动释放池,所以你应该自己创建一个。

block 实际上由底层数据结构来表示,由编译器负责创建和管理。 

posted @ 2014-07-02 21:30  功夫杨  阅读(156)  评论(0编辑  收藏  举报