GCD概念:
将任务添加到队列,并指定执行任务的函数
什么是GCD?
全称是 Grand Central Dispatch;
纯C语言,提供了非常多强大的函数.
GCD的优势:
- GCD是苹果公司为多核的并行运算提出的解决方法;
- GCD会自动利用更多的CPU内核(比如双核,四核);
- GCD会自动管理线程的生命周期(创建线程,调度任务,销毁线程);
- 程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码.
GCD函数和队列:
GCD函数:
- 任务使用block封装;
- 任务的block没有参数也没有返回值;
- 异步'dispatch_async':
- 不用等待当前语句执行完毕,就可以执行下一条语句;
- 异步是多线程的代名词.
- 同步'dispatch_sync':
- 必须等待当前语句执行完毕,才会执行下一条语句;
- 不会开启线程;
- 在当前执行block的任务
// 最基础的写法
// 1. 创建任务block
dispatch_block_t block = ^{
NSLog(@"hello GCD");
};
//2.创建队列(NULL默认代表串行队列)
dispatch_queue_t queue = dispatch_queue_create("com.lg.cn", NULL);
// 异步执行函数
dispatch_async(queue, block);
队列:
-
同步函数串行队列:
- 不会开启线程,在当前线程执行任务;
- 任务串行执行,任务一个接着一个执行;
- 会产生堵塞.
-
同步函数并发队列:
- 不会开启线程,在当前线程执行任务;
- 任务一个接着一个执行.
-
异步函数串行队列:
- 开启线程;
- 任务一个接着一个执行.
-
异步函数并发队列:
- 开启线程,在当前线程执行任务
- 任务异步执行