GCD之异步同步体会
来源:互联网 发布:怎么电话联系淘宝卖家 编辑:程序博客网 时间:2024/06/06 23:52
前面的博文也有写到同步异步,可能是看他人的博文,自己没有实验,感觉理解不深,所以就敲了些代码比较一下串行、并行分别对应的同步、异步。
1.首先创建串行、并行线程队列
1
2
dispatch_queue_t serialqueue=dispatch_queue_create(
"serialqueue"
, DISPATCH_QUEUE_SERIAL);
//串行线程队列
dispatch_queue_t concurrentqueue=dispatch_queue_create(
"concurrent"
, DISPATCH_QUEUE_CONCURRENT);
//并行线程队列
2.并行线程队列的同步、异步的比较
1
2
3
4
5
6
7
8
9
dispatch_async(concurrentqueue, ^{
NSLog
(@
"5a"
);
});
NSLog
(@
"6a"
);
dispatch_sync(concurrentqueue, ^{
NSLog
(@
"5"
);
});
NSLog
(@
"6"
);
运行结果:6a和5a的顺序不定, 5 和6的顺序始终是一样的
将上面的代码稍微修改,分别改为都是同步、都是异步、一个同步一个异步四种情况,运行查看结果基本能体会出同步的异步的区别。
3.串行线程队列的同步异步
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dispatch_async(serialqueue, ^{
NSLog
(@
"5a"
);
});
dispatch_async(serialqueue, ^{
NSLog
(@
"5aa"
);
});
dispatch_async(serialqueue, ^{
NSLog
(@
"5a1"
);
});
NSLog
(@
"6a"
);
dispatch_sync(serialqueue, ^{
NSLog
(@
"5"
);
});
NSLog
(@
"6"
);
运行结果:
同样多改变同步异步方式,多测试一下,就能感受体会到同步异步的区别。
个人体会:同步:则会阻塞当前线程,等待block添加到指定的线程运行完才返回。异步则不会阻塞当前线程,block则会在后台添加到指定的线程运行。
0 0
- GCD之异步同步体会
- GCD 之 同步 异步 并发
- gcd的同步异步
- GCD同步异步
- GCD之死锁体会
- GCD同步异步测试DEMO
- 使用GCD异步和同步执行任务
- GCD间接与同步、异步、并发联系
- 关于GCD 队列,同步异步的理解
- GCD串行并发同步异步基本概念
- iOS GCD dispatch多线程 同步异步
- GCD同步若干个异步调用
- GCD简析(同步、异步、串行、并行)
- GCD之同步函数、异步函数和串行队列、并发队列
- iOS-GCD学习之同步异步线程去执行串行操作
- 面试之同步异步
- Ajax之同步,异步
- GCD 术语 串行 vs. 并发 同步 vs. 异步
- sql语句拼装,需要if判断时一个小技巧
- GCD之死锁体会
- android弹出消息框、输入框、选择框、日期选择
- string,vector标准库类型(上)(c++ primer 复习)
- 牛客网 度度熊回家
- GCD之异步同步体会
- GCD之并行串行区别
- POJ 1084 Square Destroyer 笔记
- J
- 蓝桥杯--第七届决赛:机器人塔
- 堆栈练习1:POJ1363
- 某司框架模拟搭建完毕-mark
- GCD之after
- 数据结构与算法(12)——栈习题三