iOS多线程里,这七个对象,1进程,2线程,3同步函数,4异步函数,5并行队列,6串行队列,7主线程主队列
可以说是几个非常核心的概念,动代码之前,理解这几个概念的区别和联系是非常重要的
@2017-1月
用面向对象的观点去理解,进程和线程,同步和异步,并行和串行,还有主线程的主队列,七者关系
进程:程序不运行时就是一堆代码,运行时就是一堆的进程的组合,进程是程序运行的基本单位。
线程:线程是进程的构建对象,
同步:不开新线程,一个任务接一个任务执行 (使用syn函数,一个人做事)
异步:开新线程,多个线程分别做不同的任务 (使用asyn函数,多人做事)
串行:串行要用串行队列,
1如果同步串行,没有开启新线程,串行执行任务
2如果异步串行,开启了新线程,串行执行任务
规律:串行队列永远是串行执行,如果异步只是开了个新线程而已,不过也达到了分任务作用。
并行:并行最好用全局并行队列
1如果同步并行, 没有开启新线程,串行执行任务
2如果异步并行,有开启新线程,并行执行任务
规律:并行只有使用异步操作才能实现并行,否则白搭。
主队列:
1如果同步执行,会死锁 (和主线程自己的任务死锁了,cpu不知道该选谁进行执行了)
2如果异步执行,没有开启新线程,串行执行任务,但是会等到主线程空闲时执行任务2,也达到了分任务作用
特点:1不会造成UI卡顿,因为不是让耗时任务2,去抢UI操作的资源,而是等主线程其他所有事做完了,
包括UI操作,再去执行耗时任务2,一般是网络请求这些活。
来源: