Dispatch source替代了异步回调函数,来处理系统相关的事件。当你配置一个dispatch source时,你指定要监测的事件、dispatch queue、以及处理事件的代码(block或函数)。当事件发生时,dispatch source会提交你的block或函数到指定的queue去执 ...
分类:
其他好文 时间:
2016-04-27 10:55:26
阅读次数:
309
//开启子线程下载图片 //1.获取一个全局串行队列 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); __weak typeof(self) weakSelf = self ...
分类:
编程语言 时间:
2016-04-26 09:37:52
阅读次数:
149
串行与并行 在使用GCD的时候,我们会把需要处理的任务放到Block中,然后将任务追加到相应的队列里面,这个队列,叫做Dispatch Queue。然而,存在于两种Dispatch Queue,一种是要等待上一个执行完,再执行下一个的Serial Dispatch Queue,这叫做串行队列;另一种 ...
分类:
其他好文 时间:
2016-04-21 20:12:38
阅读次数:
180
ios文章原文 一段清理缓存的代码如下: dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) , ^{ NSString *cachPath = [NSSearchPathForDirectori ...
分类:
移动开发 时间:
2016-04-20 13:32:57
阅读次数:
177
GCD的队列可以分为2大类型,分别为串行队列和并发队列
串行队列(Serial
Dispatch Queue):
一次只调度一个任务,队列中的任务一个接着一个地执行(一个任务执行完毕后,再执行下一个任务)
创建一个队列
dispatch_queue_t q
= dispatch_queue_create(const char *label, ...
分类:
移动开发 时间:
2016-04-16 19:03:34
阅读次数:
174
GCD默认已经提供了全局的并发队列供整个应用使用,所以可以不用手动创建。
创建全局队列的函数为
[objc] view
plain copy
dispatch_queue_t q = dispatch_get_global_queue(long identifier, unsigned long flags)
参...
分类:
移动开发 时间:
2016-04-16 19:01:58
阅读次数:
245
GCD导致死锁的原因和解决方案
所谓死锁,通常指有两个线程A和B都卡住了,并等待对方完成某些操作。A不能完成是因为它在等待B完成。但B也不能完成,因为它在等待A完成。于是大家都完不成,就导致了死锁(DeadLock)。
在使用GCD的时候,我们会把需要处理的任务放到Block中,然后将任务追加到相应的队列里面,这个队列,叫做Dispatch Queue。然而,...
分类:
移动开发 时间:
2016-04-15 12:19:57
阅读次数:
377
系统给每一个应用程序提供了三个concurrent dispatch queues。这三个并发调度队列是全局的,它们只有优先级的不同。因为是全局的,我们不需要去创建。我们只需要通过使用函数dispath_get_global_queue去得到队列,如下: 1 dispatch_queue_t glo ...
分类:
编程语言 时间:
2016-04-15 11:53:37
阅读次数:
223
简单下载图片 dispatch_queue_t queue =dispatch_queue_create(NULL, DISPATCH_QUEUE_CONCURRENT); dispatch_async(queue, ^{ //1.获取网址字符串 NSString * urlString = @"h ...
分类:
Web程序 时间:
2016-04-06 23:05:33
阅读次数:
243
GCD之dispatch queue深入浅出 浅谈iOS开发中方法延迟执行的几种方式
分类:
移动开发 时间:
2016-03-20 13:09:30
阅读次数:
134