-
进程:(各自运行在受保护的内存空间,进行的程序,类似于工厂)
-
线程:(是进程的基本执行单元,每一行代码都是在线程中执行,程序启动默认有一个主线程,是干活的)听歌音乐放到后台也能听歌,迅雷也是一个道理,迅雷有五个线程,每一段线程下载文件的一部分内容,等全部完成后五个一拼,就下载完成。
-
线程的串行:顺序执行,一行一行从上往下。假如下载三个文件,只能一个一个执行。要同时下载,所以,需要多线程。
-
线程的并行:同一时间同时执行,并排跑,多个线程同时并发执行就是多线程。
-
多线程原理:真正干活的是一个CPU,并发就是以纳秒为单位快速调度线程。造成一个假象(你这个骗子),所以线程多速度也不快,频繁调度会降低系统性能。因为干活的就是CPU(例如下载时候看别的,下载基本不动,留给下载的时间太少了,大家都在抢CPU)。
-
创建线程开销:(1)1K的核心数据结构,执行一段代码。
(2)Stack Space一个栈区,无论是无线程还是子线程都是512K。
(3)Creation Time90毫秒。
-
栈区:栈区是用来保存局部变量的。512K足够。
-
多线程优缺点:(1)优点:提高程序执行效率,提高资源利用率。
(2)缺点:占内存,开多了CPU开销大,程序设计复杂。
(3)一般开3-6条。
-
主线程:UI线程(所有UI相关操作都放到主线程),单击,滚动,拖拽时间。
-
子线程:耗时线程,所有的网络访问。
-
内存区域demo1:栈区地址比较大。07xfff... 常量区地址小。
-
程序员不用管栈区内存,因为自动弹栈。需要管理堆区内存,堆区就是alloc init的。arc下也会自动管理。
-
放到后台实例:新闻,先显示文字,然后图片先占位,然后用户可以先看文字,等下载好了图片出来再看。不能下载过程中表格无法拖拽,这样用户就怒了。所以开发多线程最主要的目的就是耗时操作放在后台。