- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
多线程讲师:刘凡技术博客:
多线程的应用应用中的网络图片、视频、歌曲、书籍等资源下载游戏中的声音播放
多线程示意图充分发挥多核处理器的优势,并发执行任务让系统运行的更快、更流畅任务2任务…任务N任务1并发任务2任务2任务(…)任务N任务1并发任务1单线程示意图多线程示意图“执行流”的概念单核双核
进程与线程概念一个运行的程序就是一个进程或者叫做一个任务一个进程至少包含一个线程,线程是程序的执行流iOS程序启动时,在创建一个进程的同时,会开始运行一个线程,该线程被称为主线程主线程是其他线程最终的父线程,所有界面的显示操作必须在主线程进行!!!系统中的每一个进程都有自己独立的虚拟内存空间,而同一个进程中的多个线程则共用进程的内存空间每创建一个新的线程,都会消耗一定内存和CPU时间当多个线程对同一个资源出现争夺的时候需要注意线程安全问题
多线程的优势与难点优势充分发挥多核处理器优势,将不同线程任务分配给不同的处理器,真正进入“并行运算”状态将耗时、轮询或者并发需求高等任务分配到其他线程执行,并由主线程负责统一更新界面会使得应用程序更加流畅,用户体验更好当硬件处理器的数量增加,程序会运行更快,而无需做任何调整难点共享资源的“争夺”多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了通过提高资源使用效率来提高系统的整体性能
多线程使用注意事项线程使用不是无节制的iOS中的主线程的堆栈大小是1M从第二个线程开始都是512KB这些数值不能通过编译器开关或线程API函数更改只有主线程有直接修改UI的能力
iOS的三种多线程技术NSThreadNSOperationGCD——GrandCentralDispatch,是基于C语言的框架以上这三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的。但是就目前而言,iOS的开发者,需要了解三种多线程技术的基本使用过程。因为很多框架技术分别使用了不同多线程技术。例如NSURLConnection的异步静态方法:sendAsynchronousRequest:requestqueue:[NSOperationQueuemainQueue]completionHandler:^(NSURLResponse*response,NSData*data,NSError*error)
三种多线程技术的对比NSThread:优点:NSThread比其他两个轻量级,使用简单缺点:需要自己管理线程的生命周期、线程同步。线程同步对数据的加锁会有一定的系统开销NSOperation:不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上GCD:GrandCentralDispatch是由苹果开发的一个多核编程的解决方案。iOS4.0+才能使用,是替代NSThread,NSOperation的高效和强大的技术
多线程演练——卖票系统预设共有100张票可以销售(开发时可以少一些,专注实现)售票工作由两个线程并发进行没有可出售票据时,线程工作停止两个线程的执行时间不同,模拟售票人员效率不同使用一个多行文本框公告售票进度(主线程更新UI)线程工作安排主线程:负责更新UI线程1:模拟第1名卖票员线程2:模拟第2名卖票员两个线程几乎同时开始卖票
单线程卖票流程图是否还有票?显示当前票数总票数-1模拟售票其他耗时操作卖票结束YesNo
多线程卖票示意图共享资源(票)卖票线程1卖票线程2卖票流程卖票流程
演练准备——更新UI方法,由主线程调用//向文本框追加文本-(void)appendTextView:(NSString*)text{NSMutableString*str=[NSMutableStringstringWithString:[_infoTextViewtext]];[strappendFormat:@\n%@,text];NSRangerange=NSMakeRange(str.length,1);[_infoTextViewsetText:str];//滚动至文本框文字末尾[_infoTextViewscrollRangeToVisible:range];}
NSThread创建线程方法:+(void)detachNewThreadSelector:(SEL)selectortoTarget:(id)targetwithObject:(id)argument;-(id)initWithTarget:(id)targetselector:(SEL)selectorobject:(id)argument;参数说明:selec
您可能关注的文档
最近下载
- 智慧广场-简单的重叠问题(课件)-2024-2025学年一年级上册青岛版(五四学制)(2024).pptx VIP
- 大学教学课件:Reading-The Modern Flying Carpets and Wind-Fire Wheels-.pptx
- 第四章 课程标准、教学与评估之间的“对齐”.pptx
- 在线网课学习课堂《英语电影与文化》单元测试考核答案.docx
- 钢结构施工质量验收规范2013.docx
- 壹号土猪市场营销分析.doc VIP
- 2023-2024学年北京市海淀区七年级第一学期期末数学试卷(含答案).pdf
- 债权转让协议-中国长城资产管理股份有限公司.DOC
- 壹号土猪案例SWOT分析课件.pptx VIP
- 大学生创新创业计划书PPT完整版.pptx
文档评论(0)