GCD--Serial(串行)和Concurrent(并发)、Synchronous(同步)和Asynchronous(异步)
来源:互联网 发布:c语言移位运算 编辑:程序博客网 时间:2024/06/06 11:50
重点:队列的概念,不同队列各自的用途,优先级
相关概念
- CGD:Grand Central Dispatch,一个线程调度中心,将线程串联或者并发的传给CPU,让其执行。解决了之前多线程CPU被闲置等的问题。
- 线程:CPU可调度的一个任务。
特点
GCD有串行和并发两种队列
- 串行就是先后执行;
- 并发就是同时完成两个或多个事件;
GCD队列的三种类型:
- 系统创建–主队列:调用主线程,更新UI;全局队列:有优先级(平时用0就可以),除了自己的任务也会包含系统级别任务;
- 手动创建–自定义队列:
使用(代码示例):
用自己创建的队列来做
ps:学习苹果标准注释,并且要看懂那些注释。
GCD的一些方法:
- 延迟,主要放在主队列中运行:
- 重复(并发次数多了自然会增加系统开销,多循环可用for):主要用于耗时、重复少的并发队列中时提升性能,改善用户体验。同步,会阻塞主线程
这样就不会阻塞主线程了
异步加载两张图片: - 调度组(加载两张图片):
(notify异步)
用了三个方法实现两个图片加载,并在完成时出现加载完毕提示:
(wait同步):并发操作数据库时候,只有数据操作完成之后才能继续防止出错
队列的暂停和恢复ps: 如果已经把任务加载到队列中不能暂停。
这样修改——延迟两秒,将调度组写到延迟的闭包里
参考文献:
http://lyjh.net/2015/09/27/iOS%E5%A4%9A%E7%BA%BF%E7%A8%8BGCD%E8%AF%A6%E8%A7%A3/。
https://github.com/nixzhu/dev-blog/blob/master/2014-04-19-grand-central-dispatch-in-depth-part-1.md
以及其他网上资源
深表感谢!
0 0
- GCD--Serial(串行)和Concurrent(并发)、Synchronous(同步)和Asynchronous(异步)
- GCD 同步异步的串行和并发问题
- GCD 同步 异步 串行 并发的使用方法.例子 和特点
- GCD 同步 异步 串行 并发的使用方法.例子 和特点
- Synchronous同步Asynchronous异步
- 同步(Synchronous)/异步(Asynchronous)
- 同步(synchronous)与异步(asynchronous)
- 异步与同步 Synchronous && Asynchronous
- 同步(Synchronous). VS 异步(Asynchronous).
- 同步和异步设备I/O(Synchronous and asynchronous device IO)
- 同步和异步设备I/O(Synchronous and asynchronous device IO
- 强化学习中同步动态规划和异步动态规划 Synchronous and Asynchronous dynamic programminging
- GCD之同步函数、异步函数和串行队列、并发队列
- 关于GCD中串行队列、并发队列和同步执行、异步执行的探讨
- GCD串行并发同步异步基本概念
- 异步式(Asynchronous)与同步式Synchronous)
- 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO
- 同步(Synchronous)异步(Asynchronous) 阻塞(Blocking)和非阻塞(Non-blocking)的概念
- Maven重复类解决方案
- 11月7日——离noip还有12天
- codevs 2618 核电站问题 题解报告
- 【水题】NKOJ 3484 旅行
- 【bzoj 3942】[Usaco2015 Feb]Censoring(栈+kmp)
- GCD--Serial(串行)和Concurrent(并发)、Synchronous(同步)和Asynchronous(异步)
- php多进程
- 打印菱形
- /etc/hosts文件的作用
- 《Java编程思想》学习笔记:多态
- 就第九天学习的数组和排序问题做出的总结
- 学习C#中toString()和Convert.toString()的用法区别
- Combinations
- [BZOJ2006][NOI2010]超级钢琴(st表+heap)