美文网首页
iOS多线程有哪几种?

iOS多线程有哪几种?

作者: yxc木易星辰 | 来源:发表于2017-11-29 17:52 被阅读0次

    1、多线程的分类

    pthread

    1、一套通用的多线程API

    2、适用于Unix/Linux/Windows等系统

    3、跨平台、可移植

    4、使用难度大

    5、使用语言:C语言

    6、使用频率:几乎不适用

    7、线程的生命周期:由开发者自己进行管理


    NSThread

    1、面向对象

    2、简单易用,可直接操作线程

    3、使用语言:OC语言

    4、使用频率:偶尔使用

    5、线程的生命周期:由开发者自己管理


    GCD

    1、替换NSThread等线程技术

    2、充分利用了设备多核(自动)

    3、使用语言:C语言

    4、使用频率:经常使用

    5、线程的生命周期:自动管理


    NSOperation

    1、基于GCD(底层是GCD)

    2、比GCD多了一些简单实用的功能

    3、使用更加面向对象

    4、使用语言:OC语言

    5、线程的生命周期:自动管理


    多线程的原理:

        同一时间,CPU只能处理一条线程,只有一条线程在工作(执行),多线程并发(同时)执行,其实是CPU快速的在多条线程之间调度(切换),如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象思考:如果线程足够多,CPU会在N多条线程之间调度,CPU会累死,消耗大量的CPU资源每条线程被调度的频率会降低(线程的执行效率降低)。

    多线程的有点:

    能适当提高程序的执行效率;

    能适当提高资源利用率(CPU、内存利用率)

    多线程的缺点:

    线程需要占用一定的内存空间(默认情况下主线程占用1M子线程占用512k),如果开启大量的线程,会占用大量的内存空间,降低程序的性能,线程越多CPU在调度线程上的开销就越大程序设计更加复杂:比如线程之间的通信、多线程的数据共享

    GCD优点:

    GCD是一个轻量级的数据结构,以底层实现隐藏的神奇技术,我们可以通过GCD和block轻松实现多线程编程,有时候,GCD相比其他系统提供的多线程方法更加有效。



    相关文章

      网友评论

          本文标题:iOS多线程有哪几种?

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