使用GCD处理多线程,在多核心CPU下,会提高执行效率,下面是一段在项目中使用的GCD代码。
- (void)gcdDownload
{
static dispatch_once_t once;
static dispatch_queue_t queue;
//create download queue
dispatch_once(&once, ^{
queue =dispatch_queue_create("com.xxx.download.background",DISPATCH_QUEUE_CONCURRENT);
});
//__block type
__block BOOL downloadFlag = NO;
dispatch_async(queue, ^{
// downloadFlag = [Download sendRequest:request];
NSLog(@"长时间任务,如网络下载");
});
dispatch_barrier_async(queue,^{
if (downloadFlag) {
NSLog(@"下载成功完成");
}
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"执行完下载,回掉回主线程,例如刷新UI");
});
});
}可以向queue里放多个并发block。
本文介绍如何利用GCD(Grand Central Dispatch)在多核心CPU环境下提升多线程任务执行效率,通过创建并发队列和异步执行block实现网络下载等长时间任务的高效处理,并确保在主线程中正确回调。
5959

被折叠的 条评论
为什么被折叠?



