zoukankan      html  css  js  c++  java
  • iOS开发进阶--1.多线程简介

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

    本文适合学习完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,线程太多会降低系统的总体性能

    误区:

    • 多线程技术只是并发的执行任务,让优先级更多,更紧急的操作得到响应,并不会提高单个算法的执行效率。
  • 相关阅读:
    SAP S/4HANA extensibility扩展原理介绍
    SAP CRM系统订单模型的设计与实现
    使用nodejs代码在SAP C4C里创建Individual customer
    SAP Cloud for Customer Account和individual customer的区别
    Let the Balloon Rise map一个数组
    How Many Tables 简单并查集
    Heap Operations 优先队列
    Arpa’s obvious problem and Mehrdad’s terrible solution 思维
    Passing the Message 单调栈两次
    The Suspects 并查集
  • 原文地址:https://www.cnblogs.com/iyou/p/4985141.html
Copyright © 2011-2022 走看看