关于线程三种方式的比较

2016-07-03  本文已影响0人  SecTwilight

一、Thread
主要利用NSThread这个类,一个NSThread实例代表着一条线程
1、优点:NSThread比其他两种多线程方案较轻量级,更直观地控制线程 对象
2、缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的枷锁会有一定的系统开销
二、GCD
Grand Central Dispatch(GCD)是Apple开发的一个多核编程的较新的解决方案。它主要用于优化应用程序以支持多核处理器以及其他 对称多处理 系统。它是一个在线程池模式的基础上执行的并行任务。在MAC OS X10.6雪豹中首次推出,也可在IOS4及以上版本使用
GCD是一个提到注册NSTread等技术的很搞笑和强大的技术。GCD完全可以处理诸如数据多订和资源泄漏等复杂的异步编程问题。GCD的工作原理是让一个程序,根据可用的处理资源,安排他们在任何可用的处理器核心上排队执行特定的任务,这个任务可以是一个功能或者一个程序段。
GCD的多有的调度队列都是先进先出队列,因此,队列中的任务的开始顺序和添加到队列的中的顺序相同。我们可以将部分独立运行的任务添加队列,由系统管理执行.
GCD队列主要有三种,系统主队列main_queue、全局并发队列global_queue和自定义队列

并行对垒
1、同步并行队列:队列的执行任务与主线程是同步的,会阻塞主线程。
2、异步并行队列:队列的执行任务与主线程是异步的。
串行队列:队列中的任务必须在前一个任务结束后才能执行
1、同步并行队列:队列的执行任务与主线程是同步的会阻塞主线程
2、异步串行队列:队列的执行任务与主线程是异步的

三、NSOperation
NSOperation实例封装了需要执行的操作和执行操作所需的数据,并且能够以并发或非并发的方式执行这个操作。
NSOperation本身是抽象积累,因此必须使用它的子类,使用NSOperation子类的方式有两种:
1>自定义 Foundation框架提供了两个具体的子类直接供我们使用:NSInvocationOperation和NSblockoperation
2>自定义子类继承NSOperation实现内部相应的方法
NSOperation调用start方法即可开始执行操作,NSOperation对象默认按同步方式执行,也就是在调用start方法的那那个线程中直接执行。
一个NSOperation对象可以通过代用start方法来执行任务,默认任务是同步执行的。也可以将NSOpeartion添加到一个NSOeration添加到一个NSOperationQueue(操作队列)中去执行,而且是异步执行的。

上一篇下一篇

猜你喜欢

热点阅读