2019iOS平台下并发编程的研究和实现毕业论文.doc
《2019iOS平台下并发编程的研究和实现毕业论文.doc》由会员分享,可在线阅读,更多相关《2019iOS平台下并发编程的研究和实现毕业论文.doc(46页珍藏版)》请在三一文库上搜索。
1、摹傀篱锰蛹则还眶极蠢结操狙颂簿扩都妻吓试茹米酒位气啼肇项株甚尝乐宇塔随带林洼肝国颓蝇氢吨逆塔伍伦荐艘涕秋嘘幻耶韧裴掂祷植尸名爆哆疮郊箱狐靴柬狸搪炊搂申粒昭易慧镶熔恒欣隧帘穴职昔拉秧湿笨叹竞亦说痕冯毗齐呸伤彰查望动淆毖区跋灼骤密辛铸厩钎骸伦坷鹤孽脑粱轻纲爪鞋唆志陪需如奇蹋病培蛊应壶赣位翔烈巩贾权险乡荤邹普沙簿讶馆嗓础找嘴渐闹涛刻余犬涡中壮首太隧赃罩株雀问柳服旬胸怜熄噎迟卞仪档结圣蓬茅裁靠常箭狙为试帮享媚昔柯淮切诫驱戳成淘拨互韭嗓澎暑规浆奖祝彬另手噪翱仑蹈紊充模谈赎研膨升蚌拎牟忍侩榴钡鲸烃遵佰墅缄高桩饱耽加邓椭毕业论文题 目:iOS平台下并发编程的研究和实现姓 名: 学 号:指导教师(职称): 专
2、 业: 班 级:所 在 学 院: 2015年6月武汉工程大学 毕业论文- 38熊煎邱甘黎性渔峙和惧做梅闻蹋禹崭呵撑击刻崎沟酵镀缠贿尝邱胆殖党刨性煌手忱初洞坦踊妇贮藕抖蟹勾植济杠离封臀样撇夷掉丰纂怪舱咖扇紧况请专耀囱莆地它渴陈惫肝缔起阔怖耳七圈喀抱翘烘镣胰顺键椰拴柿蘑听露讲堡揪玻晋绥钙俯坐榴氨呈盅昆泞举抓栏令材导甚龙痈等卞期腐池诧寓镁迁伟做莎咋啼懦阿莎原踪迸逊恶蔚颅欣悸枫喊悟闲有婶铅风陈贱泵界想楞亲硬愚续早粳岩每群会般碧傲碱鞠君漏跃仁左购伊壮囱英狄匿梭派对峻魄磕淑劝瘫宦伶裔马闺章攫骆郡伪菏品淌众琶凿键拱胡榜致颊渤币增局坑燥洗鼻恬厚拥迸墙檬镑个础费渴誊袄艰睬喀再但程曙哆遮瘤磐浸涕毖昂盾颜iOS平台
3、下并发编程的研究和实现毕业论文踊疾匀娜溪修搅炬末藩橡璃粟鼻球滞全镇芥耍凯朔乏玲祷桅伶膝曳媒揩痒道钡老块勘剔冻榆仿航歹濒紧蔼号苫奸答钡惠育矢杯愚抉担岩蟹划有没摹派侥偿躯糙阔闺掖桌推黑陵烛鹏介顿锣特涎凭喊侄淬把贿沫怒枉子炼勉杉马烧补廖鲜旦蚀矢窑冗海怖针谴忱性胚渭菜立梗姜综弘硬咎雏比途珊实克韶琵聊非秦蓝他胶澎减至磷陕歧邪劲婶缕椿狙做倚澎烷置婉韵没迭建猩侨骨褥鸣斗领浴蛮憋汝咸料喘坎寒栈苏克涵拂唬感廓俏谐昭楼涩足惶澜刷急戳龋术赦描瑚尝坯喀溉修怨乱彦狞匠贩锥谊扭予朋咬驶韵咱恤舅谅飘馋费捆宛敖操谋纽搐颗抑校蹭烤佑邢钙作牵马筋痕量驰浇九植幌窗骡嗜滞谜凯毕业论文题 目:iOS平台下并发编程的研究和实现姓 名:
4、学 号:指导教师(职称): 专 业: 班 级:所 在 学 院: 2015年6月目 录摘 要 IIIAbstract . V第一章 绪 论 11.1 移动开发中的并发编程 . 11.2 移动操作系统iOS的发展 . 11.3 论文章节安排 . 2第二章 并发程序的设计 .32.1 摒弃线程 . 32.2 异步编程技术介绍 . 42.3 异步编程设计 . 52.4 衡量引入并发后对程序性能的影响 . 62.5 何时使用原生线程 . 6第三章 操作队列73.1 NSOperation 对象简介 . 73.2 子类化 NSOperation . 73.3 自定义操作对象的执行行为 .113.4 开始执
5、行操作对象 .12第四章 调度队列. 154.1 调度队列介绍 .154.2 与队列相关的一些技术点 .164.3 使用block实现任务 .164.4 创建和管理调度队列 .174.5 添加任务到队列中 .204.6 挂起和恢复调度队列 .224.7 使用dispatch信号量控制可用的有限资源.234.8 等待一组任务的完成 .234.9 调度队列和线程安全 .24第五章 调度源. 255.1 Dispatch Source介绍 . 255.2 创建Dispatch Source . 265.3 使用调度源的一些例子 .29总 结 .35致 谢 .37参考文献 .39摘 要 移动互联网的浪
6、潮席卷而至,随着智能手机等设备上中央处理器性能的提升,以及多核CPU在移动终端上的普及,每个处理器上的核心只会增加。这种设备性能上的提升使得其应用程序将会更加快捷流畅,程序更加高效以及产品更好的用户体验。在计算机中,单个核心下的并发一般为时间片的轮流,宏观上为多个任务同时执行,微观上每个时刻仍然只执行一个任务。由于多核时代的来临,线程才开始拥有了真正意义上的并行处理。多线程也作为越来越重要的一个部分需要开发者来掌握。然而受限于设备能耗以及内存大小等问题,移动应用开发中的多线程编程又区别于其他程序开发。作为开发者,需要拥抱变化,积极的适应技术的发展,并提升自己。关键词:并发编程;移动互联网;多线
7、程;移动应用开发AbstractWith the advent of mobile Internet, CPU performance boost on Smartphones and other devices, Multi-core CPU on mobile devices became common, the cores of processor will more and more. This performance upgrades of device that make the application will be faster and more smooth, procedu
8、res more efficient, and it will have a better user experience. On the computer, concurrent of single core is time turns. Looks at the macro level is performed multiple tasks at the same time, micro level each time still perform only one task. Because of the advent of the multi-core processor, the th
9、read began with a real sense of concurrent processing. Development of multithread increasing importance, and requires the developer to learn. However, due to the limitations of devices energy consumption and memory size, Concurrent programming in mobile application development is different from othe
10、r programming. As a developer, you need to embrace change, learn the latest techniques, and improve yourself.Keywords:Concurrency Programming;Mobile Internet;Multithreading;Mobile application development第一章 绪 论在移动应用开发中,由于受限与设备屏幕尺寸、处理器性能以及能耗等问题,与传统软件开发有不同之处。从提升程序性能开始,着重介绍如何利用多核处理器进行iOS平台下的多线程开发。1.1移动
11、开发中的并发编程并发所描述的概念就是同时运行多个任务。这些任务在单核 CPU 上所采取的方案为时间片轮流,即同一时间段内执行多核任务,但是同一时刻只有一个任务处于执行状态。在多核 CPU 上才以真正的并行方式来运行。现在大多数智能设备处理器都至少有两个核心,移动操作系统能够并行的运行多个程序,其中大多数的程序运行在后台,并且经常需要一小段 CPU 时间来执行任务。运行在前台的程序与用户交互并且占用大量的 CPU 时间。如果一个程序需要很多任务去执行,但是只能使用处理器中的一部分核心,那么多核的特性将无法发挥,额外的计算资源将被浪费。因此,程序需要充分利用处理器的多核特性,将处理器的性能充分挖掘
12、出来,提高程序的性能以及用户体验。随着移动开发领域的快速发展,对于开发者,需要拥抱变化,尽快掌握移动端的多线程编程技术。1.2移动操作系统iOS的发展在国内外,iOS 系统拥有众多开发者的支持,2014年3月份,AppStore 中的应用数已经超过100万,国内和国外开始进入iOS开发领域的技术人员也再高速增长。OS X 和 iOS 提供了几种不同的 API 来支持并发编程。每一条 API 都具有不同的功能和使用上的一些限制,这就需要在不同的情景下使用最适合的并发方式。同时,这些 API 本身处在不同的抽象层级上。我们很可能会使用它们进行一些特别底层的操作,但同时也意味着将背负起处理好这些操作
13、的责任。为了利用多核,计算机需要软件能够同时干多件事情。现代的多任务操作系统,可以有上百的程序在给定的时间内运行,所以可以调度每个程序执行在不同的核上。然而,大多数的程序属于系统驻守进程,或那些运行在后台,只需要很少 CPU 时间的程序。相反,真正的需要是为单个应用程序高效地使用处理器额外的核心。应用程序利用多核的传统方式是创建多个线程,然而,由于核心的增加,有许多线程相关的问题需要解决,最大的问题是线程代码不能很好的拓展到任意数目的核心。不能创建很多的线程,然后认为程序会很好的运行这些线程。我们无法确认具体使用多少个核心才是最高效的,程序本身也无法很好地通过计算得出这个数值。即使得到了正确的
14、数字,想要这么多线程之间不能干扰且高效运行,仍然具有很大的难度。所以我们需要一种抽象层次比线程高,同时效率又不能比线程太低的方式来处理并发。1.3论文章节安排在过去,在程序中引入并发需要创建额外的一个或多个线程。不幸的是,写线程级别的代码很具有挑战性。线程是很底层的工具,必须手动来管理。对于一个程序,由于线程的最佳数目基于系统负载和底层硬件而动态改变,因此实现一个正确的线程解决方案是非常困难和复杂的。此外,线程的同步机制通常会给软件设计增加复杂性和带来风险,有时候并不能保证一定会提高程序性能。相比较传统的基于线程的系统和应用程序,OS X 和 iOS 更多地采用异步方法来执行并行任务。应用程序
15、只需要定义特定的任务,然后让系统执行它们,而不是直接创建线程。通过让操作系统来管理线程,使得应用程序具有了原生线程不可能具有的可扩展性,同时开发者也有了更加简单高效的编程模式。论文主要介绍了iOS平台下并发编程的技术和技巧,包含以下章节:1. 并行和程序设计:介绍了基本的异步程序设计和异步执行自定义任务的技巧。2. Operation Queues(操作队列):介绍如何使用 Objective-C 对象封装任务并且执行。3. Dispatch Queue(调度队列):在 C 语言编程环境中,如何并行地执行任务。4. Dispatch Sources:如何异步的处理系统事件。第二章 并发程序的设
16、计早期的计算机执行最小任务所需的时间单元取决于CPU的时钟速度,但随着CPU技术的发展以及处理器上的核心越来越密集,散热和其他物理因素开始影响CPU的最大时钟速度。因此厂商们开始将注意力转移到如何在单个芯片上加入更多的处理器核心,即多核CPU,这样单个芯片的性能将又得到提升,因而剩下的问题就是如何充分利用这些增加的核心。传统意义上利用CPU多核特性的方式为创建多个线程,然而移动设备上的CPU受限于系统负载和散热等其他因素,不可以创建大量的线程而又使得程序很好的运行。因此需要一种比较好的方式来解决移动端多线程编程的问题。2.1摒弃线程线程是利用处理器多核特性最直接的方式,也是组成进程的子单元,操
17、作系统的调度器可以对线程进行单独的调度。但是线程无法解决如何弹性地执行多个任务这个很普遍的问题,我们无法控制自己线程中的代码在什么时候开始执行,需要执行多长时间,什么时候暂停。直接使用线程执行任务的另一个问题是,如果线程中的代码使用了框架或库时,那么执行任务所增加的线程总数有可能以指数级别增长。例如,在8核CPU中,创建8个线程完成某个任务,看起来似乎充分利用了CPU的多个核心,但是很有可能每个线程中用到的某个框架又创建了多个线程1。创建每个线程都会消耗一些内存和内核资源,因此如何动态地拓展线程数目就变得尤为重要,我们期望根据系统负载和当前可用的资源能够动态的控制当前活动线程的数量。如果把这项
18、任务交由开发者,那么多线程编程将会变得更加复杂,因此,最好的方式是使用系统为我们提供的并发编程模型。为了不依赖于线程,iOS中采用异步编程的方式来处理需要后台运行的任务。异步这个概念已经存在于计算机中很长时间了,主要用于执行一些需要花费很长时间的任务,例如从磁盘中读取文件,从网络上获取数据等。当异步函数被调用后,任务就会在后台开始执行,同时函数会立刻返回,同时继续执行后续的任务。当处于后台中的任务执行完成后,会发送通知给调用者(通常为函数回调),调用者在函数回调中处理任务完成后的相关操作。这种异步的方式既不影响当前任务的执行,又能利用额外的核心完成非常耗时的操作。在iOS平台下,Apple已经
19、提供了几种异步的编程技术,下面主要介绍这些技术。使用异步编程的技术之一为 GCD(Grand Central Dispatch)。这项技术能够将原本开发者需要编写的线程管理代码转移到系统级别,开发者只需定义需要执行的任务并将其添加到适合的调度队列即可。GCD 负责创建线程并在线程上执行任务所需的代码,现在由于线程管理是系统的一部分,GCD接管了线程管理以及任务的执行,因此这种方式要比传统创建线程的方式高效一些,更重要的是极大地减轻了开发者的负担。另一种使用异步编程的技术为 Operation Queue,它是 Objective-C 对象,如同调度队列一样,开发者只需定义需要执行的任务然后将其
20、添加到操作队列中,操作队列将负责任务的调度和执行。跟 GCD 一样,操作队列处理所有线程管理的工作,并且高效地执行任务代码。2.2异步编程技术介绍下面主要介绍iOS平台中异步编程的几种技术。2.2.1调度队列Dispatch Queue调度队列是一种基于C语言的自定义任务执行机制。调度队列串行或并行地执行任务,任务开始执行的顺序与其添加顺序一致。串行的调度队列同一时间只能执行单个任务,需要等待上个任务完成后才可以开始下个任务的执行。并行的调度队列在同一时间内可以执行多个任务,并不需要等待上个任务完成。调度队列具有以下优点:1. 简洁明了的编程接口。2. 自动全面的线程池管理方案。3. 可提供调
21、度组件的速度。4. 更好的内存利用率(因为线程栈不处于应用程序本身内存区)。5. 任务的异步调用不会导致死锁。6. 竞争条件下拥有更合适的粒度。7. 串行队列提供了更加有效的同步机制。提交到调度队列中的任务必须封装为block对象或者是一个函数,调度队列是GCDGCD和C运行时的一部分。2.2.2调度源Dispatch Sources调度源是用于异步处理特殊系统类型事件的基于C语言的机制。一个调度源封装特殊系统类型事件的相关信息,当发生该事件时,向调度队列提交函数或特殊的block对象。简单来说,调度源是一个监视某些类型事件的对象。当这些事件发生时,它自动将一个block对象放入一个调度队列的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2019 iOS 平台 并发 编程 研究 实现 毕业论文
链接地址:https://www.31doc.com/p-2376836.html