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
时间: 2024-10-06 05:59:28