今天碰到一个需求,在网上找了一下资料,不得不感叹GCD之强大实用。
队列:串行队列,并行队列,全局队列,主队列
//串行队列 同步执行任务 会在当前线程内执行 # 不一定是主线程
//异步的方式 执行串行队列 会创建一个新的线程来执行任务
//串行的队列都是按照顺序来执行。就是任务1 -> 任务2 -》任务3- //串行队列 同步执行任务 会在当前线程内执行 //所以打印的会是当前线程的编号 不一定是主线程
- -(void)demo
- {
- //创建串行队列 DISPATCH_QUEUE_SERIAL
- // 并行队列 DISPATCH_QUEUE_CONCURRENT
- dispatch_queue_t queue=dispatch_queue_create("itcast", DISPATCH_QUEUE_SERIAL);
- //创建任务
- dispatch_block_t task1=^{
- NSLog(@"%@ 同步执行了方法1",[NSThread currentThread]);
- };
- dispatch_block_t task2=^{
- NSLog(@"%@ 同步执行了方法2",[NSThread currentThread]);
- };
- //加入队列
- //同步的方式 执行队列
- dispatch_sync(queue, task1);
- dispatch_sync(queue, task2);
- }
- //异步的方式 执行串行队列 会创建一个新的线程来执行任务
- -(void)demo2
- {
- //创建串行队列 DISPATCH_QUEUE_SERIAL
- // 并行队列 DISPATCH_QUEUE_CONCURRENT
- dispatch_queue_t queue=dispatch_queue_create("itcast", DISPATCH_QUEUE_SERIAL);
- //创建任务
- dispatch_block_t task1=^{
- NSLog(@"%@ 异步执行了方法1",[NSThread currentThread]);
- };
- dispatch_block_t task2=^{
- NSLog(@"%@ 异步执行了方法2",[NSThread currentThread]);
- };
- //加入队列
- //异步的方式 执行队列
- //会顺序执行
- dispatch_async(queue, task1);
- dispatch_async(queue, task2);
- }