iOS开发 - 多线程相关的概念

1、进程

概念

在系统中正在运行的程序

特点

 进程之间相互独立,每个进程运行在自己的内存空间内

实例

同时打开QQ、迅雷,系统会启动两个不同的进程




2、线程

概念

线城是进程的基本执行单元,即进程想要执行任务,必须得有线程

特点

1.一个进程至少有一条线程

2.多条线程可以同时执行

3.多个线程之间共享进程的资源

4.线程之间可以相互通信,即从一条执行的线程切换到另一条线程

实例

1.迅雷打开时,就开启了一条线程

2.迅雷同时下载多部电影

3.迅雷所有的下载任务都共享迅雷的资源

4.迅雷下载一部电影较慢时,可以自动暂停,并开启另一个下载任务



3、串行、并行(并发)

概念

串行:一条线程中的任务一个一个的按照顺序执行

并行:多条线程同时执行

特点

1.一条线程可以存放多个任务,但在同一时间内只能执行一个任务

2.多条线程可以同时执行

实例

1.同一列火车进站,只能按照车头车厢的顺序一个接一个的进站

2.多列火车可以同时进站,但是每一列火车的车头车厢只能按序进站



4、主线程(UI线程)

概念

iOS程序运行后,默认开启的线程,即主线程(UI线程)

作用

显示或刷新UI界面

注意

1.耗时操作不能放在主线程,如下载较大的文件如果放在主线程会严重影响流畅度

2.显示或刷新UI界面只能放在主线程


5、多线程

概念

同一个进程中同时开启多个线程,每条线程执行不同的任务

本质:速度快

1.同一时间,CPU只能处理一条线程,意味着只有一条线程在执行

2.CPU以人类难以察觉的速度在不同的线程之间切换,造成多条线程并发执行的假象

3.如果线程非常非常多,CPU切换频繁,消耗大量资源,线程执行效率降低

特点 

优点

1.多条线程同时(并发)执行,提高程序的执行效率

2.提高资源利用率,包括CPU、内存等

缺点

1.开启新线程会占用一定内存,线程过多会降低性能

2.程序设计更加复杂,比如线程之间的通信、多条线程的数据共享

实例

迅雷可以同时下载多个不同的文件,但是如果同时下载的文件非常多,明显感觉卡


6、线程通信

概念

在一个进程中,通常有多个线程,线程不是孤立存在的,线程之前需要"沟通交流"

体现

1条线程传递数据给另一条线程

在一条线程中执行完成特定的任务后,转到另一条线程继续执行任务

常用方法

- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(nullableid)arg waitUntilDone:(BOOL)wait;

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullableid)arg waitUntilDone:(BOOL)wait;

7、iOS多线程技术



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值