iOS多线程NSThread/NSOperation/GCD

一.iOS三种多线程编程的技术

1.NSThread

2.NSOperation

3.GCD 全程: Grand Central Dispatch

抽象度从上到下依次从低到高,抽象度越高使用越简单.

二.三种方式的优缺点介绍

NSThread:(原文地址:http://blog.csdn.net/totogo2010/article/details/8010231)

优点: NSThread比其他两个轻量级

缺点:需要自己管理线程的生命周期,线程同步. 线程同步对数据的加锁会有一定的系统开销


Cocoa operation:(原文地址:http://blog.csdn.net/totogo2010/article/details/8013316)

优点:不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上.

相关的类是NSOperation,NSOperationQueue. NSOperation是个抽象类,使用它必须用它的子类,可以实现它或者使用它定义好的两个子类:NSInvocationOperation和NSBlockOperation. 创建NSOperation子类的对象,把对象添加到NSOperationQueue队列里执行.


GCD:(原文地址:http://blog.csdn.net/totogo2010/article/details/8016129)

Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法. 在iOS4.0开始之后才能使用. GCD是一个替代诸如NSThread,NSOperationQueue,NSInvocationOperation等技术的很高效和强大的技术. 现在的iOS系统都升级到8了,所以不用担心该技术不能使用.

工作原理:让程序平行排列的特定任务,根据可用的处理资源,安排他们在任何可用的处理器核心上执行任务. 一个任务可以是一个函数(function)或者是一个block. GCD的底层依然是用线程实现, 不过这样可以让程序猿不用关注实现的细节.

GCD中的FIFO队列称为dispatch queue,它可以保证先进来的任务先得到执行. dispatch queue分为下面三种:

Serial

又称为private dispatch queue, 同时只执行一个任务. Serial queue通常用于同步访问特定的资源或数据. 当你创建多个Serial queue时,虽然他们各自是同步执行的,但Serial queue与Serial queue之间是并发执行的.

Concurrent

又称为global dispatch queue,可以并发地执行多个任务,但是执行完成的顺序是随机的.

Main dispatch queue

它是全局可用的serial queue,它是在应用程序主线程上执行任务的.

你可能感兴趣的:(iOS多线程NSThread/NSOperation/GCD)