-
参考链接
实现程序多线程执行的三种方式:
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、