Grand Central Dispatch 是苹果开发的一个多核编程的解决方法。
dispatch queue 分为以下三种:
1、运行在主线程的Main queue,通过dispatch_get_main_queue获取。
2、并行队列global dispatch queue,通过dispatch_get_global_queue获取,由系统创建三个不同优先级的dispatch queue。并行队列的执行顺序与其加入队列的顺序相同。此外优先级官方文档表示为:高、中(默认)、低三种,实际上还有一种更低级别的全局队列后台队列。
3、串行队列serial queue 一般用于按顺序同步访问,可通过dispatch_queue_create创建任意数量的串行队列,各个串行队列之间是并发的。
当想要任务按照某一个特定的顺序执行时,串行队列是很有用的。串行队列在同一时间只执行一个任务。我们可以使用串行队列代替锁,去保护共享的数据。和锁不同的是:一个串行队列可以保证任务在一个可预知的顺序下执行。
屏幕快照 2015-11-25 17.02.20.png看一下使用后台加载的效果:
我从网上找了一张比较大的图片,然后在后台进行网络请求,然后在加载完毕后,进行赋值。
话不多说,上代码:
屏幕快照 2015-11-25 10.14.30.png然后是执行的顺序:
屏幕快照 2015-11-25 10.15.38.png你会发现,这张大图在网络不是很好的情况下加载了9秒钟。。
我把它新启一个线程确实比较好,因为它不会影响到主线程的运行,此时GCD的优点就非常明显啦。
最后是效果图:
屏幕快照 2015-11-25 10.16.06.png加油~
网友评论