1.概述                                  

在iOS开发中:

•耗时操作,例如网络图片、视频、歌曲、书籍等资源下载
•游戏中的声音播放
 
我们可以利用多线程:

•充分发挥多核处理器的优势,并发(同时执行)执行任务让系统运行的更快、更流畅
 
•一个运行的程序就是一个进程或者叫做一个任务
•一个进程至少包含一个线程,线程是程序的执行流
•iOS程序启动时,在创建一个进程的同时, 会开始运行一个线程,该线程被称为主线程
•主线程是其他线程最终的父线程,所有界面的显示操作必须在主线程进行!!!
•后台线程无法更新UI界面和响应用户点击事件
•系统中的每一个进程都有自己独立的虚拟内存空间,而同一个进程中的多个线程则共用进程的内存空间
•每创建一个新的线程,都会消耗一定内存和CPU时间
所以记得尽量不要开辟过多的线程,避免影响性能
•当多个线程对同一个资源出现争夺的时候需要注意线程安全问题

2.多线程的优势与注意点                          

•优势
–充分发挥多核处理器优势,将不同线程任务分配给不同的处理器,真正进入“并行运算”状态
–将耗时、轮询或者并发需求高等任务分配到其他线程执行,并由主线程负责统一更新界面会使得应用程序更加流畅,用户体验更好
–当硬件处理器的数量增加,程序会运行更快,而无需做任何调整
•注意点
–共享资源的“争夺”
–多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了通过提高资源使用效率来提高系统的整体性能
•线程使用不是无节制的
–iOS中的主线程的堆栈大小是1M
–从第二个线程开始都是512KB
–这些数值不能通过编译器开关或线程API函数更改
•只有主线程有直接修改UI的能力

                                                            清澈Saup

最新文章

  1. Android开发学习——SQLite数据库与单元测试
  2. [转]ASP.NET Core 之 Identity 入门(二)
  3. Oculus中OVRPlayerController飞行视角的制作
  4. c# 根据文件流查看文件真实格式
  5. POJ3187Backward Digit Sums[杨辉三角]
  6. Ubuntu和Windows的交互工具---Samba环境配置
  7. git stash恢复
  8. PO/POJO/VO/BO/DAO/DTO
  9. 多线程程序设计学习(5)balking模式和timed模式
  10. ASP.NET 使用C#代码设置页面元素中的样式或属性
  11. Android 从清单配置文件元数据中获取值
  12. POJ 2599 A funny game#树形SG(DFS实现)
  13. js怎么判断浏览器类型
  14. Java NIO 概览
  15. idea设置JVM运行参数
  16. ASP.NET MVC4在部署IIS后,运行时显示的是整个Web的目录列表
  17. EAS开发之对已有单据的增删查改功能开发
  18. P1908 逆序对
  19. JavaScript基础要点
  20. HDU4296-ChengduOnling-贪心

热门文章

  1. angular-sanitize 插件的使用,获取带html标签的内容
  2. python中的super怎么用?
  3. 【C】关键字void的用法
  4. ruby做接口测试
  5. 本地域名解析知识hosts
  6. Shuffling Machine
  7. [HDU6326]Monster Hunter(贪心)
  8. 20145209 2016-2017-2 《Java程序设计》第2周学习总结
  9. hdu 2187(凸包直径 1.枚举 2.旋转卡壳)
  10. tomcat createSecureRandom 花费了将近10分钟