iOS多线程的七大对象理解

时间:2021-01-28 08:50:39

1用面向对象的观点去理解,进程和线程,同步和异步,并行和串行,还有主线程的主队列,的七者关系

进程:程序不运行时就是一堆代码,运行时就是一堆的进程的组合,进程是程序运行的基本单位。

线程:线程是进程的构建对象,

同步:不开新线程,一个任务接一个任务执行 (一个人做事)

异步:开新线程,多个线程分别做不同的任务   (多人做事)

串行:串行要用串行队列,

1如果同步串行,没有开启新线程,串行执行任务

2如果异步串行,开启了新线程,串行执行任务

规律:串行队列永远是串行执行,如果异步只是开了个新线程而已,不过也达到了分任务作用。

并行:并行最好用全局并行队列

1如果同步并行, 没有开启新线程,串行执行任务

2如果异步并行,有开启新线程,并行执行任务

规律:并行只有使用异步操作才能实现并行,否则白搭。

主队列:

1如果同步执行,会死锁 (和主线程自己的任务死锁了,cpu不知道该选谁进行执行了)

2如果异步执行,没有开启新线程,串行执行任务,但是会等到主线程空闲时执行任务2,也达到了分任务作用

特点:1不会造成UI卡顿,因为不是让耗时任务2,去抢UI操作的资源,而是等主线程其他所有事做完了,

包括UI操作,再去执行耗时任务2,一般是网络请求这些活。