iOS多线程GCD

main dispatch queue
全局性的serial queue,所有和UI操作相关的任务都应该放到这个queue里面,在主线程中执行
宏dispatch_get_main_queue(),同一时间只能执行一个任务
global dispatch queue
可以并发的执行多个任务,但是执行完成的顺序是随机的。一般后台执行的任务放到这个queue里面。
函数dispatch_get_global_queue(0,0)//0默认优先级
提交任务到dispatch queue
1.同步提交
void dispatch_sync(dispatch_queue_t queue,dispatch_block_t block);
2.异步提交
void dispatch_async(dispatch_queue_t queue,dispatch_block_t block);
我们最常用的是异步提交
典型应用线程处理
为了避免界面在处理耗时的操作时卡死,比如读取网络数据,I/O,数据库读写等,我们会在另一个线程中处理这些操作,然后通知主线程更新界面。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{
     //耗时的操作
     dispatch——async(dispatch_get_main_queue(),^{
     //更新界面
     });
});
GCD的应用场合
1.主要应用在本地的多线程处理上,比如解析从网络传输过来的数据
2.对于网络方面的多线程控制,更多使用NSOperation,因为NSOperation的控制粒度更加精细

发表评论

电子邮件地址不会被公开。 必填项已用*标注