当前位置:首页 > Ios > iOS多线程简学习

iOS多线程简学习

新手在刚学习的时候不知道线程和进程的区别,在这里先给大家普及一下。

进程

每一个运行在系统中的应用程序,都有一个进程。进程是独立的,有着自己专属运行空间。进程的出现是为了解决多任务处理系统的问题。
首先看看单任务处理系统的示意图:

ios

PU按顺序执行任务1,任务2,任务3…. 前面的任务没有执行完,后面的任务是没法执行的。任务4哪怕再紧急,用的时间再短,也要等前面费时的任务3执行完才能轮到它。想象一下,你在听音乐的时候,想看视频,那就先把音乐听完才能去看,如果这样我估计你会疯掉吧。不过计算机刚刚出现的时候,系统就是单任务的。

任务1,任务2…..这里所说的任务 也就是运行在iOS系统中的app

幸好,多任务处理系统来了。

ios

时间片(每个进程被分配一时间段,称为时间片,即进程允许执行的时间)。
注意:因为时间片的时间很短,CPU执行的速度非常快,每个任务几乎都能得到响应并执行。造成这些任务同时运行的假象。实际上在单个时间片内,只有一个任务在执行。

这里我们可以看出,进程是伴随多任务处理系统出现的一个产物。满足了我们阅读的同时,又想听音乐的愿望。

进程

每个app对应一个进程,系统协调进程之间的关系。但是在app内部,也有很多的不同的操作,有些操作是紧急的,有些操作是耗时的。
那么如何合理的安排这些操作呢?线程应运而生。原理与以上进程的协调是相似的。
所以有时候称线程为轻量级进程。

线程是进程中一个独立的执行路径(控制单元),一个进程中至少包含一条线程,即主线程我们可以把耗时的操作放在别的线程中执行UI相关的操作都在主线程中,所以要在主线程中更新UI。

以淘宝为例,页面上有很多的图片,如果在主线程中下载图片,那么页面就会非常的卡。所以会把下载图片和耗时的操作放在别的线程。

ios

ios

使用多线程的优缺点

优点:

  • 充分发挥多核处理器优势,将不同线程任务分配给不同的处理器,真正进入“并行运算”状态
  • 将耗时的任务分配到其他线程执行,由主线程负责统一更新界面会使应用程序更加流畅,用户体验更好
  • 当硬件处理器的数量增加,程序会运行更快,而程序无需做任何调整

缺点:

  • 新建线程会占用更多的内存和cpu,线程太多会降低系统的总体性能

误区:

  • 多线程技术只是并发的执行任务,让优先级更多,更紧急的操作得到响应,并不会提高单个算法的执行效率。

总结

线程和进程的区别相信大家看到这里,应该心里有了比较了吧,这合适的时候灵活的运用线程和进程,会大大的提高你的稳定性和优化的。

  • << 说说JAVA,.NET,C/C++的区别
  • js篇-异步状态监控 >>
  • 作者:
    除非注明,本文原创:知道91,欢迎转载!转载请以链接形式注明本文地址,谢谢。
    原文链接:http://www.zhidao91.com/ios-threding/

    相关文章 近期热评 最新文章

    • oracle数据库相关操作注意事项
      修改Oracle SGA(共享内存) 很多网站说修改Oracle的内存通过命令 如果你这么做了,那么恭喜你,你的Oracle数据库无法启动了。如果你已经这么做了,恢复Oracle启动的方...
    • 使用微信JDK实现微信接口签名验证
      要使用微信的接口必须在绑定的域名下测试;签名必须先向微信请求到access_token,然后用access_token再去请求jsapi_ticket,最后用jsapi_ticket和相关的参数按照ASCII码...
    • ABP开发指南系列教程(2) – 多层架构...
      为了减少复杂性和提高代码的可重用性,采用分层架构是一种被广泛接受的技术。为了实现分层的体系结构,ABP遵循DDD(领域驱动设计)的原则,将工程分为四个层: 展现层(...
    • ABP开发指南系列教程(1) – 入...
      ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。 ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WE...
    • Windows下 JIRA + Agile + Mysql 破解...
      本文讲述了Windows下 JIRA + Agile + Mysql 破解安装示例教程
    • c#类的构造函数继承关系示例剖析
      本文通过示例代码讲解了c#子类的构造函数与父类的关系,子类怎样集成父类的构造函数的。