首页 > 代码库 > iOS核心笔记——多线程-基本知识

iOS核心笔记——多线程-基本知识

1、基本概念:

1-1、进程:
  • 定义:进程是指系统中正在运行的应用程序。
  • 了解:每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间里。

1-2、线程:
  • 一个进程要想执行任务,必须要有一条线程(即:每一个进程至少拥有一条线程,这条线程便是主线程)。
  • 一个进程中的所有任务都是在线程中执行。
  • 线程是进程的基本执行单元。

1-3、线程的串行:
  • 线程中所有的任务都是串行执行的,即:如果要在1个线程中执行多个任务时,多个任务只能按顺序执行;且同一时刻,1个线程只能执行1个任务。

1-4、进程与线程之间的区别:

?了解 :①线程是CPU执行任务的最小单位;

?了解 :②进程是CPU分配资源和调度的基本单位;

?了解 :③一个进程中可以拥有多条线程,且一个进程至少拥有一条线程(主线程);

?了解 :④同一个进程内的线程共享进程的资源。


2、多线程:

2-1、多线程简介:

?重要: 1、一个进程中可以开启多条线程,每条线程可以并行执行不同的任务。

?重要: 2、多线程技术可以在一定程度上提高程序的执行效率。

如下图所示技术分享


2-2、多线程原理:

?重要: 1、同一时间,CPU只能处理一条线程,只有一条线程在工作(执行);

?重要: 2、多线程并发执行,其实质是CPU快速的在多条线程之间调度、切换执行;即:如果CPU调度线程的时间足够快,就能够造成多线程并发执行的假象。

?备注: 思考:如果线程数量过多会造成什么后果?
答案:①CPU忙于N条线程之间的调度、切换,消耗大量的CPU资源;②每条线程被调度执行的频次会降低(即:线程的执行效率降低)。


2-3、多线程优缺点:
1、多线程优点:

?重要: ①能适当提高程序的执行效率;

?重要: ②能适当提高资源利用率(CPU、内存利用率)。


2、多线程缺点:

?重要: ①创建线程是有开销的,iOS下主要成本包括:内核数据结构(大约1KB)、栈空间(子线程512KB、主线程1MB,也可以使用-setStackSize:设置,但必须是4KB的倍数,而且最小是16KB),创建线程大约需要90毫秒的创建时间;

线程栈空间:技术分享

设置线程栈空间:技术分享

?重要: ②如果开启大量的线程,会降低程序的性能;且随着线程的增多CPU在调度线程上的开销也随之增大。

?重要: ③线程越多,程序设计越加复杂(例如:线程之间的通信、多条线程之间的数据共享)。


3、主线程:

3-1、主线程简介:

?了解: 一个iOS程序运行后,默认会开启1条线程,这条线程被称为“主线程”或UI线程。


3-2、主线程主要作用:

?重要: 1、显示、刷新UI界面;

?重要: 2、处理UI事件(例如:点击事件、滚动事件、拖拽事件等)。


3-3、主线程的使用注意:

?重要: 1、不要将耗时操作放到主线程中执行;

?重要: 2、耗时操作会卡住主线程,严重影响UI刷新的流畅度;用户体验感很差。


3-4、怎么判断线程是否为主线程:

?了解: ①查看线程的number == 1或者name == main;

?了解: ②NSThread的类方法isMainThread方法;

?了解: ③NSThread对象方法isMainThread方法。


4、iOS中多线程实现方案:

技术分享


iOS核心笔记——多线程-基本知识