多线程与GCD

线程与进程的概念

  • 线程是进程的基本执行单元。一个进程的所有任务依赖线程执行。
  • 进程是应用程序在操作系统中的独立运行的空间,是由多条线程共同完成的。每个进程之间都是相互独立的

区别:

  • 进程是操作系统资源分配的基本单元。
  • 线程是操作系统任务调度和执行的最小单元。
  • 多线程的优缺点:
  • 优点:
  • 提高程序的执行效率
  • 适当提高资源利用率(CPU\内存)
  • 缺点:
  • 大量的线程会占用大量的空间
  • 线程越多,CPU在调用线程上的开销越大
  • 程序设计更复杂,需要处理线程间通讯和数据

GCD

  • Grand central dispatch 中央处理器

  • 是纯C语言写的,专门支持多核处理器

  • 自动管理线程的生命周期

  • 并发和串行只决定任务的执行顺序,,跟线程无关

  • 并发 异步嵌异步

image.png 打印: 2 4 3

  • 并发: 异步嵌同步
  • image.png

打印:2 3 4 同步是立即执行

并发:同步嵌异步

image.png 打印 2 4 3

并发:同步嵌同步(同步在一个队列按顺序执行,同步是立即执行)

image.png 按顺序执行 2 3 4

  • 串行 :异步嵌同步 死锁

image.png

串行 :异步嵌异步 ( 打印 2 4 属于同一个任务)

image.png 打印:2 4 3

串行:同步嵌同步 死锁

image.png

串行 :同步嵌异步

image.png

打印:2 4 3

死锁发生的条件: 串行同步会发生死锁

主队列也是串行队列, 如果主队列执行同步任务也会发生死锁情况

image.png

猜你喜欢

转载自juejin.im/post/7106069924526686245