IOS开发多线程 - 多线程的简单介绍

来源:互联网 发布:淘宝产品拍摄价格表 编辑:程序博客网 时间:2024/05/10 10:54

一.同步和异步

同步和异步是任务执行的两种方式

1.什么是同步

    我们之前写程序的时候都是从上到下,代码顺序执行的    1个人执行多个任务,也是要依次执行,因为1个人同一时间只能执行1个任务    多个任务按序依次执行,就是同步执行    1)同步的概念:必须等待当前语句执行完毕,才可以执行下一个语句

这里写图片描述
2.什么是异步

    多个人同时执行多个任务

这里写图片描述

二.进程和线程
1.什么是进程

进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存空间内

这里写图片描述

比如同时运行QQ 和 Xcode,系统会分别启动两个进程通过“活动监视器”可以查看Mac系统中所开启的进程

2.什么是线程

1个进程可以有多个线程组成(1个进程至少要有1个线程)线程是进程的基本执行单元,一个进程的所有任务都在线程中执行

这里写图片描述

    比如听音乐,发送QQ消息,接收QQ消息都要在线程中执行

三.多线程

1.什么是多线程

多线程 : 1个进程中可以开启多个线程,多个线程可以“同时”执行不同的任务进程-公司,线程-员工,老板是什么?多线程可以解决程序阻塞的问题多线程可以提高程序的执行效率

2.多线程的执行原理
这里写图片描述
a. (单核CPU)同一时间,cpu只能处理1个线程,只有1个线程在执行任务
b. 多线程同时执行:是CPU快速的在多个线程之间的切换
c. cpu调度线程的时间足够快,就造成了多线程的”同时”执行的假象
d. 如果线程数非常多,cpu会在n个线程之间切换,消耗大量的cpu资源
i. 每个线程被调度的次数会降低,线程的执行效率降低

3.多线程的优缺点

多线程的优点    能适当提高程序的执行效率    能适当提高资源的利用率(cpu,内存)    线程上的任务执行完成后,线程会自动销毁多线程缺点    开启线程需要占用一定的内存空间(默认情况下,每一个线程都占512KB)    如果开启大量的线程,会占用大量的内存空间,降低程序的性能    线程越多,cpu在调用线程上的开销就越大    程序设计更加复杂,比如多线程的数据共享、线程间的通信

4.主线程

    一个程序运行后,默认会开启1个线程,称为“主线程”或“UI线程”    主线程一般用来  刷新UI界面 ,处理UI事件(比如:点击、滚动、拖拽等事件)    主线程使用注意    注意:**别将耗时的操作放到主线程中**    耗时操作会卡住主线程,严重影响UI的流畅度,给用户一种卡的坏体验

5.总结

实际上,使用多线程,由于会开线程,必然就会消耗性能,但是却可以提高用户体验。所以,综合考虑,在保证良好的用户体验的前提下,可以适当地开线程,一般开3-6条。

这里写图片描述

但是需要注意的是:实际上,无论是主线程还是子线程,默认的堆栈大小都是512KB。官方文档没有及时更新。
0 0
原创粉丝点击