标签:
大部分笔记源自于:Objective-C高级编程(iOS与OS多线程和内存管理)一书,时间有些久远,甚至GCD网上说已经不需要手动释放release了,但是书中强调是使用GCD需要开发者自己管理计数。
首先什么是GCD?
这是Apple公司为了方便开发者,使开发者更专注于多线程中的任务执行内容的API,官方说明中:开发者要做的只是定义想执行的任务并追加到适当的Dispatch Queue中。是C语言但被组建成面像对象风格。他是我们是用来异步执行任务的技术之一。还有Pthread,NSThread,NSOperation,NSOperationQueue。
首先,我们App中就有一个主线程,一般情况下都是在这里进行的,特别是很大一部分UI是要在主线程上更新,而部分网络请求则是不在主线程更新,为了避免应用程序卡主或者阻塞了用户的交换。
而在GCD中,DispatchQueue分为了两种,一种是称为串行队列(Serial Dispatch Queue),一种是并行队列(Concurrent Dispatch Queue),而我们需要执行的任务一般情况下是用Block语法中记叙,并加入到Dispatch Queue中执行。
串行队里中的任务是按照队列任务执行的,按照先进先出的方法来执行队列中加载的block(即我们所需干的事情)。当一个block没完成时,该队列后面的block是不会执行的!必须一个一个来!
但是并行队列并不需要等待,即前面的block没有执行完,后面的block也会执行,是多个block同时执行!不需要等待结束。
标签:
原文地址:http://www.cnblogs.com/hams/p/5040406.html