网络开始---多线程---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