美文网首页iOS多线程相关iOS点滴程序员
iOS开发进阶--1.多线程简介

iOS开发进阶--1.多线程简介

作者: findM | 来源:发表于2015-11-22 00:13 被阅读305次

    相关文章链接:
    1.多线程简介(本文)
    2.实现多线程的3种方法
    ......待续

    学习是由已知的知识模型推理未知的知识模型的的过程。

    本文适合学习完objective-c基础,想进一步提高做iOS开发的同学阅读。

    在说线程的时候,我们先看看进程。

    1.进程

    每一个运行在系统中的应用程序,都有一个进程。进程是独立的,有着自己专属运行空间。进程的出现是为了解决多任务处理系统的问题。
    首先看看单任务处理系统的示意图:


    单任务处理系统.png

    CPU按顺序执行任务1,任务2,任务3.... 前面的任务没有执行完,后面的任务是没法执行的。任务4哪怕再紧急,用的时间再短,也要等前面费时的任务3执行完才能轮到它。想象一下,你在听音乐的时候,想看视频,那就先把音乐听完才能去看,如果这样我估计你会疯掉吧。不过计算机刚刚出现的时候,系统就是单任务的。

    任务1,任务2.....这里所说的任务 也就是运行在iOS系统中的app

    幸好,多任务处理系统来了。

    多任务调度系统.png
    时间片(每个进程被分配一时间段,称为时间片,即进程允许执行的时间)。
    注意:因为时间片的时间很短,CPU执行的速度非常快,每个任务几乎都能得到响应并执行。造成这些任务同时运行的假象。实际上在单个时间片内,只有一个任务在执行。

    这里我们可以看出,进程是伴随多任务处理系统出现的一个产物。满足了我们阅读的同时,又想听音乐的愿望。

    2.线程

    每个app对应一个进程,系统协调进程之间的关系。但是在app内部,也有很多的不同的操作,有些操作是紧急的,有些操作是耗时的。
    那么如何合理的安排这些操作呢?线程应运而生。原理与以上进程的协调是相似的。
    所以有时候称线程为轻量级进程。

    • 线程是进程中一个独立的执行路径(控制单元)
    • 一个进程中至少包含一条线程,即主线程
    • 我们可以把耗时的操作放在别的线程中执行
    • UI相关的操作都在主线程中,所以要在主线程中更新UI

    以淘宝为例,页面上有很多的图片,如果在主线程中下载图片,那么页面就会非常的卡。所以会把下载图片和耗时的操作放在别的线程。

    淘宝页面加载图片.png 耗时的操作放在别的线程中.png

    3.使用多线程的优缺点

    优点:

    • 充分发挥多核处理器优势,将不同线程任务分配给不同的处理器,真正进入“并行运算”状态
    • 将耗时的任务分配到其他线程执行,由主线程负责统一更新界面会使应用程序更加流畅,用户体验更好
    • 当硬件处理器的数量增加,程序会运行更快,而程序无需做任何调整

    缺点:

    • 新建线程会占用更多的内存和cpu,线程太多会降低系统的总体性能

    误区:

    • 多线程技术只是并发的执行任务,让优先级更多,更紧急的操作得到响应,并不会提高单个算法的执行效率。

    相关文章

      网友评论

      本文标题:iOS开发进阶--1.多线程简介

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