zoukankan      html  css  js  c++  java
  • 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同步和异步:指的是能否开启新的线程。同步不能开启新的线程,异步可以。(是否开启新的跑道)

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

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

      

  • 相关阅读:
    Orcale 之基本术语一
    robots 小记
    划分子网例题详解 转
    jsp中利用response.senddirect(str)重定向,传递参数新思路
    当有多个form表单请求时如何处理?
    Form表单中的action提交路径问题
    用mysql workbench导出mysql数据库关系图
    eclipse中html编辑环境的搭建
    两个jsp文件运行后弹出对话框 下载文件问题
    Eclipse tomcat配置 未在Eclipse中添加.jar包出错
  • 原文地址:https://www.cnblogs.com/dzq1991/p/6339633.html
Copyright © 2011-2022 走看看