OC_多线程实现的几种方式

1、 NSThread
2、Cocoa NSOperation (使用NSOperation和NSOperationQueue)
3、GCD(Grand Central Dispatch)


1、NSThread

优点:NSThread比其他两个轻量级;
缺点:需要自己管理线程的生命周期,线程同步,线程同步时对数据的加锁会有一定的系统开销。

NSThread生成线程的两种方式:

//第一种:- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument 
NSThread* thread = [NSThread alloc] initWithTarget:self selector:@selector(do:) object:nil];
[thread start];

//第二种:+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument
[NSThread detachNewThreadSelector:@selector(do:) toTarget:self withObject:nil];

cocoa中的一些函数也会单独开辟一个线程执行我们的操作如:

//- (id)performSelector:(SEL)aSelector;

//- (id)performSelector:(SEL)aSelector withObject:(id)object;

//-(void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)
delay inModes:(NSArray *)modes;

//- (void)performSelectorBackground:(SEL)aSelector withObject:(id)argNS_AVAILABLE(10_5,2_0);

2、Cocoa Operation

优点:不需要关心线程管理,数据同步的事情;
注:Cocoa Operation相关的类是NSOperation、NSOperationQueue。NSOperation是个抽象类,使用时必须用它的子类,可以实现它或者定义好两个子类:NSInvocationOperation和NSBlocOperation。创建NSOperation子类的对象,把对象添加到NSOperationQueue队列里执行,我们会把我们执行操作放在NSOperation中main函数中。

3、GCD

Grand Central Dispatch(GCD)是Apple开发的一个多核编程的解决方法,GCD是一个代替诸如NSThread、NSOperationQueue、NSInvocationOperation等技术的高效强大的技术,它让队列平行排队的执行特定任务,根据可用的处理资源,安排他们在任何可用的处理器核心上执行任务,一个任务可以是一个函数或者是一个block、

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 1...
    AlanGe阅读 1,836评论 0 17
  • 1、简介:1.1 iOS有三种多线程编程的技术,分别是:1.、NSThread2、Cocoa NSOperatio...
    LuckTime阅读 1,389评论 0 1
  • 多线程 在iOS开发中为提高程序的运行效率会将比较耗时的操作放在子线程中执行,iOS系统进程默认启动一个主线程,用...
    郭豪豪阅读 2,626评论 0 4
  • 受宠若惊,上一篇被编辑推到首页!感谢! 我要更加认真努力画画写字啦! 正经脸(。ì _ í。) 已经决定去上班了。...
    天天_哈阅读 442评论 0 15
  • 1. 关于select模型: 上一篇文章写了多线程的echo服务器,使用多线程的好处是同时相应建立连接的客户端和进...
    DayDayUpppppp阅读 1,996评论 0 2