前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多线程一些基本概念多线程一些基本概念

多线程一些基本概念多线程一些基本概念

作者头像
用户8893176
发布2021-08-09 11:08:22
2650
发布2021-08-09 11:08:22
举报
文章被收录于专栏:小黑娃Henry

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 并发队列
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/6/29 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、线程进程
    • 1.1 进程
      • 1.2 线程
        • 1.3 区别与联系
        • 2、多线程真相
        • 3、iOS中多线程方案
        • 4、线程的生命周期
        • 5、线程池
        • 6、线程和RunLoop的关系
        • 7、队列和线程:
          • 7.1 串行队列
            • 7.2 并发队列
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档