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

一.同步和异步

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

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。
官方文档没有及时更新。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章