多任务系统调度
成都创新互联公司成立于2013年,我们提供高端网站建设、成都网站制作、网站设计、网站定制、成都全网营销、微信小程序开发、微信公众号开发、seo优化排名服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为成都凿毛机企业提供源源不断的流量和订单咨询。
每个应用程序由操作系统分配的短暂的时间片(Timeslice)轮流使用CPU,由于CPU对每个时间片的处理速度非常快,用户会感觉这些任务好像是同时执行
并发:多个任务在同一段时间内同时执行,但在一个时间点,一个CPU只能执行一个任务。
进程与线程
进程
正在运行的程序,负责程序的内存分配
每一个进程都有自己独立的虚拟内存空间
线程
线程是进程中一个独立执行路径(控制单元)
一个进程中至少包含一条线程,即主线程
可以将耗时的执行路径(如:网路请求)放在其他线程中执行
进程与线程的区别:
进程是分配资源的最小单位,线程是处理器调度的最小单位
创建线程的目的:
为了开启一条新的执行路径,运行指定的代码,与主线程中的代码实现同时执行。
在iOS应用中,主线程的栈区控件为1M,子线程的栈区为512K
多线程开发简介
优势
1)充分发挥多核处理器的优势,将不同线程任务分配给不同的处理器,真正进入“并行计算”状态。
2)将耗时的任务分配到其他线程,由主线程负责更新界面,使应用程序运行更加流畅,用户体验更好。
3)当硬件处理器的数量增加时,程序运行更快,代码无需调整
弊端 :新建线程会消耗内存空间和CPU时间,线程太多会降低系统运行性能。
误区 :
1)多线程技术是为了并发执行多项任务,不会应用程序的执行效率。
2)算法的设计、优化,是提高程序执行效率的方案。
iOS开发中用到的线程技术
iOS本质上是Unix系统,可以支持pthread线程库,但并不推荐
iOS中进行多线程的操作,管理方式是“线程池”
线程池中的关键元素:线程调度中心、任务队列。
线程调度中心:负责创建线程、从任务队列取出并分配任务的执行。
任务队列:存储需要多线程执行的任务。
对于开发人员,想要实现多线程的任务,只需要向指定的任务队列放入任务即可,线程调度中心会分配并自动去执行这些任务。
iOS开发中常用的线程技术包括:
1)NSObject提供了的多线程方法
建立线程非常方便,但对线程管理很难实现,不推荐
2)GCD —— Grand Central Dispatch 大中心调度
基于C语言的API,相对底层。使用BLOCK定义任务行为,使用起来简单灵活
3)NSOperation
基于GCD实现的一套Objective-C的面向对象接口,且提供了一些GCD不容易实现的特性
NSThread
描述了一个线程对象,线程对象不需要我们去创建,而是由任务队列负责创建及管理
通过线程对象,可以获得线程的状态信息
获得当前的线程对象:
+ (NSThread *)currentThread
使用%@打印线程对象,能够查看到线程的一些信息
线程睡眠方法:
+ (void)sleepForTimeInterval:(NSTimeInterval)ti
当前线程终止方法:
+ (void)exit
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站名称:iOS多线程开发简介-创新互联
文章路径:http://lswzjz.com/article/eigec.html