iOS —— 多线程基础

软件设计 2017-04-18

一、进程

进程可以理解为一个应用程序;比如说打开 QQ,那么在内存中就会为 QQ 分配一块进程;打开微信,那么在内存中就会为 微信 分配一块进程;并且进程之间是相互独立的

iOS —— 多线程基础

二、线程

1. 基本概念

线程是进程的基本单元(可以理解为一个进程中的各个操作);比如说 QQ,其中的很多操作,比如说发送文件,下载图片等,这些都是子线程

例如 xcode 进程中的线程

iOS —— 多线程基础

一个进程最少有一个线程,称为主线程

进程的各个操作都是在主线程或子线程中完成的

2. 串行、并行

串行和并行都是针对线程而言的

串行 串行是指一个线程中的任务一个一个执行,即上一个任务执行完,下一个任务才能继续;即在同一时间内,只能执行一个任务

如图 

iOS —— 多线程基础

可以看出,串行的耗时是所有任务的总和

并行 并行是指一个线程中的任务可以同时进行;即在同一时间内可以进行多个任务

如图

iOS —— 多线程基础

3. 多线程

1)概念

因为每个进程最少都一个线程(主线程),在主线程中还可以创建多个子线程,并且主线程和子线程中的任务是互不干涉的;

也就是说,在同一时间内,可以同时进行主线程和子线程中的任务

如图

iOS —— 多线程基础

2)原理

a. 单核操作系统

在单核操作系统上,因为在同一时间内只能运行一个任务,那如何实现多线程呢??

系统会为每一个线程指定一个确定的执行时间,当然这个时间很短,然后在各个线程之间做切换(调度),以此来达到多线程

如图

iOS —— 多线程基础

可以看出,单核操作系统的多线程实际上还是串行的,只不过在时间很短的情况下进行线程之间的切换,所以看起来就好像是多线程了

b. 多核操作系统 在多核操作系统上,在同一时间内可以运行多个任务,所以很容易实现多线程,并且是真正的多线程

如图 

iOS —— 多线程基础

3)优缺点

a. 优点 

  能提高 CPU 的利用率和执行效率

b. 缺点 

  消耗内存(创建一个新的线程会消耗一定的内存) 

  如果开启的线程过多,那么 CPU 的开销就越大

4)iOS 的多线程

iOS 应用在启动后,只会开启一条线程(主线程,也称 UI 线程)

通常,在 主线程 中做一些不耗时的工作;例如 刷新 UI 界面、监控事件等

相关推荐