iOS中实现多线程的方法
2015-10-19 15:20
239 查看
第一种,NSThread是一个控制线程执行的对象,它不如NSOperation抽象,通过它我们可以方便的得到一个线程,并控制它。但NSThread的线程之间的并发控制,是需要我们自己来控制的,可以通过NSCondition实现。
优点:NSThread 比其他两个轻量级
缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销
NSThread实现的技术有下面三种:Cocoa threads、POSIX threads、Multiprocessing Services,一般使用cocoa thread 技术。
第二种,Cocoa operation ,NSOperation是一个抽象类,它封装了线程的细节实现,我们可以通过子类化该对象,加上NSQueue来同面向对象的思维,管理多线程程序。
优点:不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上。
Cocoa operation 相关的类是 NSOperation ,NSOperationQueue。NSOperation是个抽象类,使用它必须用它的子类,可以实现它或者使用它定义好的两个子类:NSInvocationOperation 和 NSBlockOperation。创建NSOperation子类的对象,把对象添加到NSOperationQueue队列里执行。
第三种,使用GCD,GCD是(Grand Central Dispatch)的缩写 ,从系统级别提供的一个易用地多线程类库,具有运行时的特点,能充分利用多核心硬件。GCD的API接口为C语言的函数,函数参数中多数有Block。
GCD是Apple开发的一个多核编程的解决方法。在iOS4.0开始之后才能使用。GCD是一个替代诸如NSThread, NSOperationQueue, NSInvocationOperation等技术的很高效和强大的技术。现在的iOS系统都升级到6了,所以不用担心该技术不能使用。
三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的。
优点:NSThread 比其他两个轻量级
缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销
NSThread实现的技术有下面三种:Cocoa threads、POSIX threads、Multiprocessing Services,一般使用cocoa thread 技术。
第二种,Cocoa operation ,NSOperation是一个抽象类,它封装了线程的细节实现,我们可以通过子类化该对象,加上NSQueue来同面向对象的思维,管理多线程程序。
优点:不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上。
Cocoa operation 相关的类是 NSOperation ,NSOperationQueue。NSOperation是个抽象类,使用它必须用它的子类,可以实现它或者使用它定义好的两个子类:NSInvocationOperation 和 NSBlockOperation。创建NSOperation子类的对象,把对象添加到NSOperationQueue队列里执行。
第三种,使用GCD,GCD是(Grand Central Dispatch)的缩写 ,从系统级别提供的一个易用地多线程类库,具有运行时的特点,能充分利用多核心硬件。GCD的API接口为C语言的函数,函数参数中多数有Block。
GCD是Apple开发的一个多核编程的解决方法。在iOS4.0开始之后才能使用。GCD是一个替代诸如NSThread, NSOperationQueue, NSInvocationOperation等技术的很高效和强大的技术。现在的iOS系统都升级到6了,所以不用担心该技术不能使用。
三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的。
相关文章推荐
- IOS开发:xib和storyboard的混用
- iOS连wifi(修改密码后的wifi)遇到的坑,纯转载
- ios block中引用self
- ios layer的一些学习
- iOS - NSString常用方法
- iOS开发 arc与非arc代码的区别
- iOS原生地图开发指南续——大头针与自定义标注
- IOS公司开发者账号申请详细教程--1 备用
- iOS开发之用户登陆信息存储
- 项目适配iOS9遇到的一些问题及解决办法
- IOS 开发深入
- ios中集合遍历方法的比较和技巧
- iOS 判断字符串中含有某个字符串 用rangeOfString
- iOS中几种数据持久化方案
- 切换控制器后,如何 隐藏/显示自定义tabBar,并添加隐藏/显示tabBar动画
- IOS添加pch预编译文件
- iOS9变化笔记
- iOS开发之iOS8指纹解锁
- iOS:XCode自适应布局概念
- iOS_根据文字字数动态确定Label宽高