GCD编程

525 阅读1分钟

iOS面试题系列:

iOS面试合集+答案(一)

iOS面试合集+答案(二)

iOS面试合集+答案(三)

iOS面试合集+答案(四)

iOS面试合集+答案(五)

常见的iOS开发面试题(题集)

一份iOS开发者的学习路线参考

使用GCD处理多线程,在多核心CPU下,会提高执行效率,下面是一段在项目中使用的GCD代码。

1.  - (void)gcdDownload
2.  {
3.      static dispatch_once_t once;
4.      static dispatch_queue_t queue;
5.      //create download queue
6.      dispatch_once(&once, ^{
7.          queue =dispatch_queue_create("com.xxx.download.background",DISPATCH_QUEUE_CONCURRENT);
8.      });
9.       //__block type
10.     __block BOOL downloadFlag = NO;
11.     dispatch_async(queue, ^{
12. //        downloadFlag = [Download sendRequest:request];
13.         NSLog(@"长时间任务,如网络下载");
14.     });
15.  
16.     dispatch_barrier_async(queue,^{
17.         if (downloadFlag) {
18.             NSLog(@"下载成功完成");
19.         }
20.         
21.         dispatch_async(dispatch_get_main_queue(), ^{
22.             NSLog(@"执行完下载,回掉回主线程,例如刷新UI");
23.         
24.         });
25.                        });
26. }

可以向queue里放多个并发block。

原:blog.csdn.net/xunyn/artic…