情形1:
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"不会执行");
});
如果在主线程添加这段代码,即同步执行添加到主队列的block。这个函数会等block执行完毕返回主线程,再继续执行下面的代码,而block要等主线程返回才会执行,所以循环等待造成死锁。
如果改成异步就可以了,因为当前主线程的一次ru...
分类:
编程语言 时间:
2015-07-01 18:35:41
阅读次数:
164
dispatch_sync: ?Submits a block to a dispatch queue like dispatch_async(), however ? dispatch_sync() will not return until the block has finished. ? ?Calls to dispatch_sync() targeting the curr...
分类:
其他好文 时间:
2015-06-13 13:02:02
阅读次数:
233
1.dispatch_queue_t queue = dispatch_get_main_queue(); dispatch_sync(queue, ^{ NSLog(@"Hello?"); });
分类:
移动开发 时间:
2015-06-01 18:41:59
阅读次数:
162
GCD全称是Grand Central Dispatch特点:
自动利用CPU的多核技术
自动管理线程的生命周期
使用步骤
定制任务
将任务添加队列
各类队列的特点关于同步和异步的两种执行方式 /**
* 同步方式执行任务,不管是什么队列,都不会再开一个线程
*/
dispatch_sync(, ^{...
分类:
移动开发 时间:
2015-05-13 19:50:25
阅读次数:
179
同步,不具备开启线程的能力:dispatch_sync异步,具备开启线程的能力:dispatch_async并列队列:多个任务可以同时执行串行队列:一个任务执行完后,再执行下一个任务一个金典的列子:#define ZHGlobalQueue dispatch_get_global_queue(DIS...
分类:
移动开发 时间:
2015-04-16 12:08:10
阅读次数:
125
1.异步执行 dispatch_async(dispatch_get_global_queue(0,?0),?^{??????
//?something?
}); 2.同步执行 dispatch_sync(dispatch_get_global_queue(0,?0),?^{??????
//?something?
}); dispat...
分类:
其他好文 时间:
2015-04-02 16:52:58
阅读次数:
126
同步,异步,并发,串行1,同步和异步主要影响:能不能开启新的线程*同步(dispatch_sync):在当前线程中执行任务,不具备开启新线程的能力;*异步(disaptch_async):在新线程中执行任务,具备开启新线程的能力;2,并发和串行主要影响:任务的执行方式*并发:多个任务并发(同时)执行...
分类:
其他好文 时间:
2015-03-16 00:58:30
阅读次数:
181
1.gcdfmdb使用了gcd,它是通过 建立系列化的G-C-D队列 从多线程同时调用调用方法,GCD也会按它接收的块的顺序来执行。fmdb使用的是dispatch_sync,多线程调用a serialized queue,gcd会在接收块的线程执行,并阻塞其他线程。使用FMDatabaseQueu...
分类:
移动开发 时间:
2015-01-25 16:26:53
阅读次数:
180
记笔记。。。-------
1.串行队列 —-一个接一个执行
创建一个队列
dispatch_queue_t q = dispatch_queue_create(“gcd1", DISPATCH_QUEUE_SERIAL);
for (int i = 0; i
// 同步任务顺序执行
dispatch_sync(q, ^...
分类:
其他好文 时间:
2014-12-10 12:36:40
阅读次数:
162