美文网首页IOS常用知识点整理
关于IOS多线程三种方式的那点儿事

关于IOS多线程三种方式的那点儿事

作者: 洪荒少年郎 | 来源:发表于2016-05-24 21:58 被阅读831次

    1.NSThread

    NSThread是IOS提供的可以开辟一个线程的类,是完全面向对象的,可以直接操控线程对象和方法,非常直观和方便。

    [NSThread isMainThread]可以返回一个Bool值。用于检测当前线程是主线程还是分线程。1是主线程;0是分线程。

    [NSThread detachNewThreadSelector: toTarget: withObjct: ]这个方法是开辟一个分线程,第三个参数是你想要往这个方法里面传的值。

    NSThread这种方法创建的线程需要管理线程的生命周期、同步、加锁问题,会导致一定的性能开销。不过可以用[NSThread currentThread]跟踪任务所在线程,在调试的时候十分方便。

    2.NSOperation和NSOperationQueue

    它是苹果公司对GCD的封装,是面向对象的线程技术。只需将任务放到对应的队列中,不必关心线程管理、同步等问题。

    NSOperationQueue是个操作队列,可以开辟一个分线程,也称线程池。通过alloc创建出来的操作队列相当于开辟了一个分线程;[NSOperationQueue mainQueue]获取主队列,这时把操作对象放进主队列里,他们都会在主线程里执行任务。[queue addOperation: ]

    NSOperation是操作队列要放置的操作对象。他是一个虚类,不能直接使用,只能用它的子类:NSInvocationOperation、NSBlockOperation。

    需要注意的是更新刷新UI一定要在主线程里执行。

    3.GCD(Grand Central Dispach)

    GCD用来解决多核编程问题,IOS4之后提出的,是基于C语言的底层API。

    GCD是苹果为多核编程的并行运算提出的解决方案,所以会自动合理的利用更多的CPU内核。

    GCD会自动管理线程的生命周期,创建线程、调度任务、销毁线程。

    GCD使用block来定义任务,使用起来非常灵活。

    通过GCD可以创建串行、并发、主队列,可以同步和异步执行任务。

    ****************自己IOS学习的知识点总结,有不足之处,还请多多包涵***********

    相关文章

      网友评论

      本文标题:关于IOS多线程三种方式的那点儿事

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