QHP_28多线程

QHP_28多线程_第1张图片

进程:是指在系统中正在运行的一个应用程序

线程:1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程);1个进程的任务都要在线程中执行

QHP_28多线程_第2张图片

多线程:1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务

进程->车间   线程->车间工人

多线程原理:

QHP_28多线程_第3张图片
QHP_28多线程_第4张图片

iOS中多线程的实现方案

QHP_28多线程_第5张图片

NSThread

QHP_28多线程_第6张图片

线程的状态

QHP_28多线程_第7张图片

控制线程状态

QHP_28多线程_第8张图片

当多个线程运行的时候,要加锁

QHP_28多线程_第9张图片

线程间的通信

在子线程中运行方法
QHP_28多线程_第10张图片
上面标记的方法也可以这样写

GCD

QHP_28多线程_第11张图片
QHP_28多线程_第12张图片
QHP_28多线程_第13张图片




QHP_28多线程_第14张图片
QHP_28多线程_第15张图片
QHP_28多线程_第16张图片

异步函数+并发:可以同时开启多条线程

QHP_28多线程_第17张图片
和上图中的创建一个并发队列是一样的

同步函数+并发队列:不会开启新的线程


QHP_28多线程_第18张图片

异步函数+串行队列:串行队列只能创建,没有全局

QHP_28多线程_第19张图片

同步函数+串行队列:不会开启新的线程,在当前线程中执行任务


QHP_28多线程_第20张图片
QHP_28多线程_第21张图片

异步函数+主队列:只在主线程中执行任务


QHP_28多线程_第22张图片


同步函数+主队列:


QHP_28多线程_第23张图片


QHP_28多线程_第24张图片
标记中是比较常用的

GCD线程之间的通信


QHP_28多线程_第25张图片


QHP_28多线程_第26张图片
QHP_28多线程_第27张图片
QHP_28多线程_第28张图片
QHP_28多线程_第29张图片

// 首先是创建一个队列组

QHP_28多线程_第30张图片
QHP_28多线程_第31张图片

你可能感兴趣的:(QHP_28多线程)