01-多线程网络 IOS

上传人:油条 文档编号:11769911 上传时间:2017-10-15 格式:DOCX 页数:3 大小:107.68KB
返回 下载 相关 举报
01-多线程网络 IOS_第1页
第1页 / 共3页
01-多线程网络 IOS_第2页
第2页 / 共3页
01-多线程网络 IOS_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《01-多线程网络 IOS》由会员分享,可在线阅读,更多相关《01-多线程网络 IOS(3页珍藏版)》请在金锄头文库上搜索。

1、1. 多线程的底层实现?1 首先搞清楚什么是线程、什么是多线程2 Mach 是第一个以多线程方式处理任务的系统,因此多线程的底层实现机制是基于 Mach 的线程3 开发中很少用 Mach 级的线程,因为 Mach 级的线程没有提供多线程的基本特征,线程之间是独立的4 开发中实现多线程的方案 C 语言的 POSIX 接口:#include OC 的 NSThread C 语言的 GCD 接口(性能最好,代码更精简) OC 的 NSOperation 和 NSOperationQueue(基于 GCD)2线程间怎么通信?1 performSelector:onThread:withObject:w

2、aitUntilDone:2 NSMachPort3网络图片处理问题中怎么解决一个相同的网络地址重复请求的问题?利用字典(图片地址为 key,下载操作为 value)4用 NSOpertion 和 NSOpertionQueue 处理 A,B,C 三个线程,要求执行完 A,B 后才能执行 C,怎么做?/ 创建队列NSOperationQueue *queue = NSOperationQueue alloc init;/ 创建 3 个操作NSOperation *a = NSBlockOperation blockOperationWithBlock:NSLog(”operation1-“);

3、NSOperation *b = NSBlockOperation blockOperationWithBlock:NSLog(”operation1-“);NSOperation *c = NSBlockOperation blockOperationWithBlock:NSLog(”operation1-“);/ 添加依赖c addDependency:a;c addDependency:b;/ 执行操作queue addOperation:a;queue addOperation:b;queue addOperation:c;5列举 cocoa 中常见对几种多线程的实现,并谈谈多线程安全

4、的几种解决办法及多线程安全怎么控制?1 只在主线程刷新访问 UI2 如果要防止资源抢夺,得用 synchronized 进行加锁保护3 如果异步操作要保证线程安全等问题, 尽量使用 GCD(有些函数默认就是安全的)6GCD 内部怎么实现的1 iOS 和 OS X 的核心是 XNU 内核,GCD 是基于 XNU 内核实现的2 GCD 的 API 全部在 libdispatch 库中3 GCD 的底层实现主要有 Dispatch Queue 和 Dispatch Source Dispatch Queue :管理 block(操作) Dispatch Source :处理事件7. 你用过 NSOp

5、erationQueue 么?如果用过或者了解的话,你为什么要使用NSOperationQueue,实现了什么?请描述它和 GCD 的区别和类似的地方(提示:可以从两者的实现机制和适用范围来描述) 。1 GCD 是纯 C 语言的 API,NSOperationQueue 是基于 GCD 的 OC 版本封装2 GCD 只支持 FIFO 的队列, NSOperationQueue 可以很方便地调整执行顺序、设置最大并发数量3 NSOperationQueue 可以在轻松在 Operation 间设置依赖关系,而 GCD 需要写很多的代码才能实现4 NSOperationQueue 支持 KVO,可

6、以监测 operation 是否正在执行(isExecuted) 、是否结束(isFinished) ,是否取消(isCanceld )5 GCD 的执行速度比 NSOperationQueue 快任务之间不太互相依赖:GCD任务之间有依赖或者要监听任务的执行情况:NSOperationQueue8. 既然提到 GCD,那么问一下在使用 GCD 以及 block 时要注意些什么?它们两是一回事儿么?block 在 ARC 中和传统的 MRC 中的行为和用法有没有什么区别,需要注意些什么?Block 的使用注意:1 block 的内存管理2 防止循环 retian 非 ARC(MRC):_block ARC:_weak_unsafe_unretained9在异步线程中下载很多图片,如果失败了,该如何处理 ?请结合 RunLoop 来谈谈解决方案.(提示:在异步线程中启动一个 RunLoop 重新发送网络请求,下载图片)1 重新下载图片2 下载完毕, 利用 RunLoop 的输入源回到主线程刷新 UIImageVIUew10. Socket 的实现原理及 Socket 之间是如何通信的11. http 协议的实现

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号