一、多线程基本概念

iOS开发——多线程

 

很多朋友都说iOS开发中,最难理解和学习的就是多线程,本人也是在多线程方面投入过很多脑细胞。。无论这方面的知识掌握和应用起来是否轻松,牢固的基本功、正确的认识理解、再加上充分的实战经验,都能助你将其搞定。这里先介绍一些多线程的知识以及应用,作为讨论,大家共同学习。

一、多线程基本概念

 

1、线程与进程

 

(1)进程:操作系统的每一个应用程序就是一个进程

 

(2)线程:进程的基本执行单元,一个进程的所有任务都在线程中执行

 

2、主线程

 

(1)定义:一个程序运行后,默认会开启1个线程,称为“主线程”或“UI线程”。其他为“子线程”。

 

(2)作用及注意:线程一般用来 刷新UI界面 ,处理UI事件(比如:点击、滚动、拖拽等事件),避免将耗时的操作放到主线程,以免造成主线程卡顿。

 

3、多线程原理:

(1)是CPU快速的在多个线程之间的切换(自身的随机调度算法)。

(2)同步/异步:

  • 同步:指的就是在当前线程(不一定是主线程)中,从上而下依次执行任务(代码块的阅读顺序),这个就叫做同步。
  • 异步:指不在当前线程中执行了,开辟新的线程执行, 注意:即使在别的线程中执行,也是从上而下依次执行的。

 

4、iOS多线程实现方案

 

多线程的技术方案.png 

5、线程的占用空间:

(1)子线程:512KB。

(2)主线程:512KB。这里官方文档给出的是1M,实际测试为512,可以打印线程的stackSize属性验证。

 

6、线程的状态和生命周期:

 (1)控制线程的状态(以NSThread管理线程为例)

 

a、启动线程:- (void)start;

      线程进入就绪状态,当线程执行完毕后自动进入死亡状态。

b、暂停(阻塞)线程

+ (void)sleepUntilDate:(NSDate *)date;

+ (void)sleepForTimeInterval:(NSTimeInterval)ti;

线程进入阻塞状态

  • c、停止线程

+ (void)exit;

线程进入死亡状态

(2)状态图

线程状态图.png

7、线程的属性(以NSThread管理线程为例,一下是NSTread类中的方法或属性)

(1)stackSize:占内存大小

(2)name:名字

(3)threadPriority:优先级

 

posted @ 2016-03-09 21:27  独孤求傲  阅读(146)  评论(0编辑  收藏  举报