一. 多线程的基本概念

一. 进程和线程

  1. 进程
    • 系统中正在运行的程序, 称之为一个进程
    • 每个进程, 都在自己独立的内存空间运行, 并且进程之间互不影响
  2. 线程
    • 进程的所有任务, 都是在线程执行的, 可以说他是进程的基本执行单元
    • 进程的串行
      • 单个进程中任务的执行, 是串行执行的, 每个任务按顺序执行
      • 单个线程, 同一时间内, 只能执行一个任务
  3. 进程和线程的比较
    • 进程
      • 进程是CPU分配资源和调度的单位
      • 同一个进程中的线程, 共享进程的资源
    • 线程
      • 线程是CPU调用(执行任务)的最小单位
      • 一个程序可以对应多个进程, 一个进程中可以有多个咸亨

二. 多线程

  1. 概念与原理

    • 一个进程可以有多个线程, 每个线程可以并行(同时)执行不同的任务(如一个下载软件, 可以使用三个线程, 同时下载不同的文件)
    • 原理
      • 统一时间, CPU只能调用一条线程, 也就是说同一时间只有一条线程能在工作
      • 并行, 其实就是CPU在以极快的速度, 在不同的线程之间调度执行, 造成了并行的假象(特指单核CPU)
      • 而如今的多核CPU, 每个核心可以同时处理不同的任务, 从而真正达到了多线程并发执行任务
  2. 多线程的优缺点

    • 优点:
      • 提高了程序运行的效率
      • 提高了资源利用率, 充分的使用了空闲的内存和CPU资源
    • 缺点
      • 每创建一条线程, 都会开辟内存空间, 并且消耗90毫秒的时间
      • 如果开启过多的线程, 势必会拖慢CPU的运行速度, 降低程序的性能, 让CPU开销过大
      • 多线程的程序, 往往设计上会较为复杂, 线程间的切换/主线程和子线程的协调, 都是开发中较难解决的问题

三. 多线程在iOS开发中的应用

  1. 主线程

    • 应用程序运行之后, 在UIApplication回自动开启一条主线程(UI线程)
    • 主线程的作用, 主要是用来显示/刷新UI界面, 处理UI事件
  2. 使用时的注意事项

    • 耗时操作(如加载时间过长的操作), 不要放在主线程挡住, 否则会影响主线程处理UI事件, 导致运行界面拖慢, 降低用户体验
    • 当耗时操作还没有结束的时候, UI界面无法响应用户的交互, 直至耗时操作结束后, 主线程才能继续处理UI事件
    • 因此: 耗时操作, 应该放在子线程中去执行(如后台线程, 非主线程)
  3. 判断当前线程是否为主线程

    • 使用[NSThread currentThread]来获取当前的线程, 如果打印的结果为number = 1, name = main, 则该线程就是主线程
    • 使用[NSThread isMainThread]该方法会返回一个BOOL值, 如果当前线程是主线程的话, 就会返回1, 否则返回0
    • 使用NSTherad创建的线程对象"thread", 调用[thread isMainThread], 就会判断当前的线程对象是否为主线程
  4. 多线程的实现方案

    4B1838CF-D9A2-44EC-9FE1-E11B2D9E7323.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、进程和线程的基础知识 1、进程和线程的概念 进程:运行中的应用程序称为进程,拥有系统资源(cpu、内存) 线程...
    我是嘻哈大哥阅读 366评论 0 3
  • 线程概述 有些程序是一条直线,起点到终点;有些程序是一个圆,不断循环,直到将它切断一个运行着的程序就是一个进程或者...
    褪而未变阅读 314评论 0 0
  • iOS开发多线程总是绕不过的坎,看了很多前辈们优秀的文章,如:关于iOS多线程,我说,你听,没准你就懂了!、谈iO...
    Andy_Ron阅读 3,398评论 6 65
  • 一、多线程基础 基本概念 进程进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用且...
    AlanGe阅读 563评论 0 0
  • 1月5日 星期五 晴 因为昨天下了一场大雪,所以道路上都是积雪给大家带来很多的不便...
    徐鑫悦妈妈阅读 169评论 0 0