美文网首页iOS多线程
多线程一些基本概念

多线程一些基本概念

作者: Henry________ | 来源:发表于2021-06-29 23:00 被阅读0次

    1、线程进程

    1.1 进程

    • 进程是系统资源分配的最小单位,在iPhone中就是一个应用程序;
    • 进程中的任务都是由线程来执行;
    • 进程至少有一条线程,在进程开始执行时默认开启,也就是常说的:主线程;
    • 每个进程的资源、地址空间都是相互独立的(安卓会涉及到多进程开发);

    1.2 线程

    • 线程是进程执行任务的基本单元;
    • 进程中线程之间是共享资源和地址空间
    • 进程中至少有一条线程;

    1.3 区别与联系

    • 进程之间资源、地址空间相互独立,线程之间资源、地址空间可以共享
    • 单一进程奔溃后,不会影响其他进程;线程奔溃后,进程也会随之奔溃,进程比线程更加健壮;
    • 进程切换时,消耗的资源大,效率高;但涉及共享资源的并发操作只能使用线程;
    • 执行过程:每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口。但是 线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

    2、多线程真相

    • 单核cpu同一时间CPU只能处理1个线程的任务,需要CPU在各个线程中快速切换,造成了多线程执行的假象。而切换的时间单位就是时间片。CPU进行线程切换时需要耗费cpu资源的,所以线程过多的情况下会造成性能的下降。
    • 多核cpu情况下才是真正的多线程执行;

    3、iOS中多线程方案

    4、线程的生命周期

    5、线程池

    6、线程和RunLoop的关系

    • runloop与线程是一一对应的,一个runloop对应一个核心的线程,为什么说是核心的,是因为runloop是可以嵌套的,但是核心的只能有一个,他们的关系保存在一个全局的字典里;
    • runloop是来管理线程的,当线程的runloop被开启后,线程会在执行完任务后进入休眠状态,有了任务就会被唤醒去执行任务;
    • runloop在第一次获取时被创建,在线程结束时被销毁;对于主线程来说,runloop在程序一启动就默认创建好了;
    • 对于子线程来说,runloop是懒加载的,需要在使用前进行创建;

    7、队列和线程:

    • 任务是在线程中进行执行;
    • 队列进行线程中任务的排序和分发,非执行任务处于挂起状态;
    • 队列分为: 串行队列-同步;并发队列-异步
    • 队列是一种数据结构。在相同复杂度任务- 遵循fifo先进先出的原则;

    7.1 串行队列

    7.2 并发队列

    相关文章

      网友评论

        本文标题:多线程一些基本概念

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