「这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战」
多线程的一些相关概念
什么是进程
- 在系统中正在运行的一个应用程序
- 每个进程之间是独立的,每个进程均运行在其专用而且受保护的内存空间内
什么是线程
- 一个进程要想执行任务,必须得有一个线程,而且每一个进程中至少有一个线程
- 进程的所有任务都在线程中执行
什么是线程的串行
-
一个线程中的任务都是串行执行的
-
如果要在一个线程中执行多个任务,那么只能一个一个按顺序来执行这些任务
-
同一时间内,一个线程只能执行一个任务
比如在一个线程中下载几个文件(文件A,文件B,文件C)
多线程
什么是多线程
一个进程中可以开启多条线程,每条线程可以并行执行不同的任务
比如同时开启三条线程分别下载几个文件(文件A,文件B,文件C)
多线程原理
- 同一时间,CPU只能处理一条线程,只有一条线程在工作
- 多线程并发,其实是CPU快速的在多条线程之间切换
- 如果多线程切换速度特别快,就造成了多线程并发执行的假象
注:
如果线程非常多,CPU会在N多线程之间切换,CPU消耗就会特别大,每条线程被调用额频率就会被降低,所有要适当使用多线程
多线程优缺点
-
优点
- 能适当的提高程序执行效率
- 能够适当的提高资源利用率(CPU,内存利用率)
-
缺点
- 创建线程是有开销的,iOS下主要成本包括:内核数据结构(大约1KB),栈空间(子线程512KB,主线程1MB,也可以使用-setStackSize:设置,但是必须是4K的倍数,而且最小是16K),创建线程大约需要90毫秒的创建时间
- 若开启大量线程,会降低线程上的性能,CPU消耗越大
- 多线程使用太多,会使程序设计更加复杂,比如线程间的通信,数据共享等等