多线程GCD的详细讲解 任务和队列(串行队列,并发队列) (一)
来源:互联网 发布:淘宝大学一飞老师 编辑:程序博客网 时间:2024/05/01 12:28
1.什么是GCD
2.任务和队列
执行任务的方式
队列:串行队列,并行队列,全局队列,主队列
//串行队列同步执行任务 会在当前线程内执行 # 不一定是主线程
//异步的方式执行串行队列 会创建一个新的线程来执行任务
//串行的队列都是按照顺序来执行。就是任务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); }
并行队列
//并行队列,同步的方式执行 并不会开辟新线程
//异步的方式执行并行队列 会创建多个新的线程来执行多个任务 是随机无序执行的
//并行队列,同步的方式执行 并不会开辟新线程-(void)demo{ //创建串行队列 DISPATCH_QUEUE_SERIAL // 并行队列 DISPATCH_QUEUE_CONCURRENT dispatch_queue_t queue=dispatch_queue_create("itcast", DISPATCH_QUEUE_CONCURRENT); //创建任务 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_CONCURRENT); //创建任务 dispatch_block_t task1=^{ NSLog(@"%@ 异步执行了方法1",[NSThread currentThread]); }; dispatch_block_t task2=^{ NSLog(@"%@ 异步执行了方法2",[NSThread currentThread]); }; //加入队列 //异步的方式 执行队列 //会顺序执行 dispatch_async(queue, task1); dispatch_async(queue, task2); }
2 0
- 多线程GCD的详细讲解 任务和队列(串行队列,并发队列) (一)
- 多线程GCD的详细讲解 任务和队列(串行队列,并发队列)
- GCD 串行队列,并发队列和主队列的整理
- GCD 串行队列,并发队列和主队列的整理
- GCD的串行队列和并行队列
- iOS 之GCD串行和并发队列的理解
- iOS 之GCD串行和并发队列的理解
- iOS-多线程编程学习之GCD——串行队列和并发队列(五)
- GCD串行并发队列扫盲
- GCD串行并发队列扫盲
- GCD串行并发队列扫盲
- GCD串行并发队列扫盲
- GCD串行并发队列扫盲
- GCD之串行队列与并发队列
- iOS开发之GCD 多线程 1.串行队列 2.并行队列 3.分组 4.信号量 详细讲解
- iOS-GCD的串行队列和并行队列的任务及实现
- 关于GCD中串行队列、并发队列和同步执行、异步执行的探讨
- 说说Android的广播(2) - 并发队列和串行队列
- kaggle-浮游生物分类比赛一等奖---译文(第三部分)
- Android 开发之AsyncTask的用法
- ECSHOP二次开发,在用户中心的订单详情页显示商品缩略图
- CSS(CS3)编码规范
- 2016蓝桥杯假期任务之《扶老奶奶过街》
- 多线程GCD的详细讲解 任务和队列(串行队列,并发队列) (一)
- python库
- DWR Server Push(服务器推技术) 实现即时聊天功能(WEB)`
- Redis集群方案redis-twemproxy-keepalived
- 蛇形矩阵
- Java基础——流
- HTML5编码规范(编写灵活,稳定,高质量的HTML)
- UVA422
- poj 2778(AC自动机+矩阵)