网络开始---多线程---GCD-01-基本使用(掌握)(六)

 1 /**
 2  GCD两个核心概念:任何和队列
 3  
 4  任务:执行什么操作
 5  队列:用来存放任务
 6  
 7  使用就2个步骤
 8  1.定制任务
 9  2.将任务添加到队列中 
10  
11  任务的取出队列原则:FIFO原则: 先进先出,后进后出
12  
13  */
14 
15 #import "HMViewController.h"
16 
17 @interface HMViewController ()
18 
19 @end
20 
21 @implementation HMViewController
22 
23 - (void)viewDidLoad
24 {
25     [super viewDidLoad];
26     // Do any additional setup after loading the view, typically from a nib.
27 }
28 
29 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
30 {
31     //能不能开启新的进程 有两个用来执行任务的函数
32     // dispatch_sync : 同步的方式,就是在当前线程执行,不具备开启线程的能力
33     // dispatch_async : 异步的方式,走一条跟当前线程不一样的线程,具备开启线程的能力
34     
35     
36     //任务的执行方式
37     // 并发队列 :多个任务可以同时执行
38     // 串行队列 :一个任务执行完后,再执行下一个任务
39     
40     // 获得全局的并发队列
41     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
42     
43    // DISPATCH_QUEUE_PRIORITY_DEFAULT 队列被调度的优先级,这里是默认,一般都这样写
44     
45     //5条并发执行的队列
46     
47     // 将 任务 添加 全局队列 中去 异步 执行
48     //有两个参数:queue-队列   block:任务
49     dispatch_async(queue, ^{//开启异步线程,只要将要执行的代码放到block中就行了
50         //这里是下载图片,只要将下载图片的代码放里面就行了
51         NSLog(@"-----下载图片1---%@", [NSThread currentThread]);
52         //它是在子线程中执行的 自动在子线程中执行
53     });
54     dispatch_async(queue, ^{
55         NSLog(@"-----下载图片2---%@", [NSThread currentThread]);
56     });
57     dispatch_async(queue, ^{
58         NSLog(@"-----下载图片3---%@", [NSThread currentThread]);
59     });
60     dispatch_async(queue, ^{
61         NSLog(@"-----下载图片4---%@", [NSThread currentThread]);
62     });
63     dispatch_async(queue, ^{
64         NSLog(@"-----下载图片5---%@", [NSThread currentThread]);
65     });
66 }
67 
68 @end
原文地址:https://www.cnblogs.com/ithongjie/p/4818098.html