美文网首页
关于线程三种方式的比较

关于线程三种方式的比较

作者: SecTwilight | 来源:发表于2016-07-03 18:39 被阅读0次

    一、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(操作队列)中去执行,而且是异步执行的。

    相关文章

      网友评论

          本文标题:关于线程三种方式的比较

          本文链接:https://www.haomeiwen.com/subject/aekcjttx.html