iOS多线程入门
来源:互联网 发布:决战 秘笈进阶数据 编辑:程序博客网 时间:2024/05/21 10:24
三种多线程方式
NSThread:基本不用
GCD:
原理:先创建一个队列 把操作(任务)加载里面
队列:串行/并行
任务:同步异步
串行异步非常常用(类似于排队走, 最安全的线程) 用于下载图片
并行异步(并排跑 类似于赛跑) 执行顺序程序员不能控制
串行同步 队列同步任务同样会在主线程上运行(不用)
并行同步 不需要创建子线程
串行队列既可以保证效率 (新建一个子线程) 又能够实现并发
并行队列容易出错 执行顺序程序员不能控制
同步任务一般用来阻塞任务(如登录)
gcd全局队列
与并行的区别:
- 全局队列不需要创建 直接get就能用
- 执行效果 与两个队列的执行效果一样
- 全局队列没有名称 调试时无法确定准确队列
gcd主线程队列(保证操作在主线程运行)
每一个程序只有一个主线程(所有iOS开发中 UI操作 都必须在主线程上执行)
异步任务 在主线程运行 同时也是保持队形的
同步任务 会阻塞 因为主线程一直在工作 一直在执行任务 同步的任务永远不会被执行
NSOperationQueue:
两个队列:主队列/自定义队列
原理:定义一个操作 加入到队列中
开多少线程 由系统决定
GCD 是串行队列,异步执行,只会开一个线程
NSOperationQueue:
- 可以设定执行顺序 用addDependency 可能会开多个线程 但是不会开太多
- 依赖关系 可以跨队列
- 可以设置最大并发数(在设定最大并发数时,如果前一个线程工作完成 但是没有销毁会新建线程)
应用场景:网络开发中,下载工作
NSBlockOperation:
NSInvocationOP:
需要定义一个方法 能接受一个参数 使用不够灵活
注:所有自定义队列,都是在子线程中运行
0 0
- iOS多线程入门
- iOS 多线程入门
- iOS多线程入门
- iOS多线程入门之NSThread,NSOperation,GCD
- iOS多线程入门之NSThread,NSOperation,GCD
- iOS学习笔记11-多线程入门
- 多线程 入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- 多线程入门
- Python copy a list
- 不相交集ADT
- UICollectionView
- Emacs常用命令记录at Mac
- z-index离奇事件及应对之策
- iOS多线程入门
- hdoj4047Pet【dfs】
- adb shell ,出错 提示error: device not found
- LInux 中的i386,i486,i586,i686和AMD_64,X86,x86_64后缀的区别
- 据说年薪30万的Android程序员必须知道的帖子
- 测试分析-场景分析法
- 阿里合伙人制度的意义及法律分析
- 使用navigator对象信息对浏览器进行判断
- 虚拟地址空间