/**
GCD两个核心概念:任何和队列 任务:执行什么操作
队列:用来存放任务 使用就2个步骤
1.定制任务
2.将任务添加到队列中 任务的取出队列原则:FIFO原则: 先进先出,后进后出 */ #import "HMViewController.h" @interface HMViewController () @end @implementation HMViewController - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
} - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//能不能开启新的进程 有两个用来执行任务的函数
// dispatch_sync : 同步的方式,就是在当前线程执行,不具备开启线程的能力
// dispatch_async : 异步的方式,走一条跟当前线程不一样的线程,具备开启线程的能力 //任务的执行方式
// 并发队列 :多个任务可以同时执行
// 串行队列 :一个任务执行完后,再执行下一个任务 // 获得全局的并发队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, ); // DISPATCH_QUEUE_PRIORITY_DEFAULT 队列被调度的优先级,这里是默认,一般都这样写 //5条并发执行的队列 // 将 任务 添加 全局队列 中去 异步 执行
//有两个参数:queue-队列 block:任务
dispatch_async(queue, ^{//开启异步线程,只要将要执行的代码放到block中就行了
//这里是下载图片,只要将下载图片的代码放里面就行了
NSLog(@"-----下载图片1---%@", [NSThread currentThread]);
//它是在子线程中执行的 自动在子线程中执行
});
dispatch_async(queue, ^{
NSLog(@"-----下载图片2---%@", [NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"-----下载图片3---%@", [NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"-----下载图片4---%@", [NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"-----下载图片5---%@", [NSThread currentThread]);
});
} @end