iOS多线程的七大对象理解

  iOS多线程里,这七个对象,1进程,2线程,3同步函数,4异步函数,5并行队列,6串行队列,7主线程主队列

  可以说是几个非常核心的概念,动代码之前,理解这几个概念的区别和联系是非常重要的

@2017-1月

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

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

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

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

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

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

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

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

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

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

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

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

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

  主队列:

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

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

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

                     比如UI操作,再去执行耗时任务,比如网络请求这些活。

  2进程包含线程,线程包含队列 (串行队列,并发队列)

  3多线程的意义在于不让主线程去做耗时操作

    即使要做,也要等到主线程空闲后再做,这样就不会造成UI卡顿

  4同步和异步:指的是能否开启新的线程。同步不能开启新的线程,异步可以。(是否开启新的跑道)

    串行和并行:指的是任务的执行方式。串行是指多个任务时,各个任务按顺序执行,(是否多任务并列走)

                         完成一个之后才能进行下一个。并行指的是多个任务可以同时执行。异步是多个任务并行的前提条件