OC_多线程实现的几种方式

  • 参考链接

    • IOS多线程实现方式
  • 实现程序多线程执行的三种方式:

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、

你可能感兴趣的:(OC_多线程实现的几种方式)