iOS中的多线程(多线程相关概念)

165 阅读2分钟

「这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

多线程的一些相关概念

什么是进程

  • 在系统中正在运行的一个应用程序
  • 每个进程之间是独立的,每个进程均运行在其专用而且受保护的内存空间内

什么是线程

  • 一个进程要想执行任务,必须得有一个线程,而且每一个进程中至少有一个线程
  • 进程的所有任务都在线程中执行

什么是线程的串行

  • 一个线程中的任务都是串行执行的

  • 如果要在一个线程中执行多个任务,那么只能一个一个按顺序来执行这些任务

  • 同一时间内,一个线程只能执行一个任务

    比如在一个线程中下载几个文件(文件A,文件B,文件C)

    Snip20211102_9.png

多线程

什么是多线程

一个进程中可以开启多条线程,每条线程可以并行执行不同的任务

比如同时开启三条线程分别下载几个文件(文件A,文件B,文件C)

Snip20211102_10.png

多线程原理

  • 同一时间,CPU只能处理一条线程,只有一条线程在工作
  • 多线程并发,其实是CPU快速的在多条线程之间切换
  • 如果多线程切换速度特别快,就造成了多线程并发执行的假象

注:
如果线程非常多,CPU会在N多线程之间切换,CPU消耗就会特别大,每条线程被调用额频率就会被降低,所有要适当使用多线程

多线程优缺点

  • 优点

    • 能适当的提高程序执行效率
    • 能够适当的提高资源利用率(CPU,内存利用率)
  • 缺点

    • 创建线程是有开销的,iOS下主要成本包括:内核数据结构(大约1KB),栈空间(子线程512KB,主线程1MB,也可以使用-setStackSize:设置,但是必须是4K的倍数,而且最小是16K),创建线程大约需要90毫秒的创建时间
    • 若开启大量线程,会降低线程上的性能,CPU消耗越大
    • 多线程使用太多,会使程序设计更加复杂,比如线程间的通信,数据共享等等