iOS - 初识多线程

作者:Mitchell 

一 进程:

  • 指在系统中正在运行的一个应用程序
  • 每个进程之间是相互独立的

二 线程:

  • 1个进程要想执行任务,必须得有线程(每个进程至少要有1条线程)
  • 1个进程的所有任务都再线程中执行
  • 线程的内部是串行的

三 多线程:

  • 什么是多线程

    • 1个进程中可以开启多条线程,多条线程可以并行执行不同的任务。
    • 多线程可以提高程序执行的效率
    • cpu同时只能运行一条线程,只不过通过时间片轮转,也就是CPU快速在多个线程之间调度(切换),如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象。
  • 多个线程的缺点:

  • 多线程的优点:

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

    • 创建线程是有开销的,iOS下主要成本包括:内核数据结构(大约1KB)、栈空间(子线程512KB、主线程1MB,也可以使用 -setStacjSize: 设置,但是必须是4K的倍数,而且最小是16K),创建线程大约需要90毫秒的创建时间
    • 如果开启大量的线程,会降低程序的性能
    • CPU会在N多线程之间调度,CPU会累死,消耗大量的CPU资源
    • 每条线程被调度执行的频次被降低(线程的执行效率下降)

四 主线程:

  • 什么是主线程
    • 一个 iOS 程序运行后,默认会开启1条线程,称为“主线程”“UI线程”
  • 主线程的主要作用
    • 显示/刷新UI界面(如果在子线程中处理会有bug)
    • 处理UI事件(点击、滚动、拖拽)
  • 主线程的使用注意
    • 不要将比较耗时的操作放到主线程中
  • 如何获取主线程

[NSThread mainThread];(number = 1,name = main)
- 
[NSThread currentThread];
``` (如果是在当前方法是被主线程执行的,那么拿到的就是主线程,否则是当前线程)
+ 如何判断当前是否是在主线程中执行的
    - 判断当前是否在主线程中执行的
 [NSThread isMainThread]
    
---

你可能感兴趣的:(iOS - 初识多线程)