首页 > 代码库 > 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核心笔记——多线程-基本知识