1、什么是多线程
多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。
这个是百度上的解释!
2、为什么要学习多线程技术
目的都差不多就是:
- 提高硬件的使用效率。
- 改善用户对软件的使用体验。
你不希望用户在使用你的软件的过程中出现卡顿吧!
软件出现卡顿的主要原因就是 UI 线程处理了太多的耗时操作,耗时操作操作没有处理完成,UI界面就出现短暂性的停顿(卡顿)。
软件界面卡顿的解决方案:
- UI 线程只处理 UI 的事情,例如界面的更新,用户事件的响应。耗时的操作可以放在后台的线程中执行,当耗时操作处理完毕后,通知 UI 线程刷新相应的界面。
提高 app 处理某一任务的能力:
- 由于现在的 cpu 基本上都是多核处理器,都可以进行并发操作。假设,下载一个文件用一个线程是 10 分钟,如果用 2个线程下载是否就只需要 5 分钟, 用 5个线程下载是否就只要 2 分钟。在用户的体验上是否效率提高了 500% 。 用户的使用体验就是一个字 爽。
使用多线程技术也提高了硬件的使用效率。
3、多线程的基本概念
-
进程: 正在进行的应用程序。(可以简单理解为,一个运行的应用程序就是一个进程)
每个进程之间是独立的,每个进程都运行在专用的且受保护的内存空间内。 -
线程:1 个进程需要执行任务,必须得有线程。(每一个进程至少有一条线程)
线程是进程的执行单元,一个进程中的所有任务都在线程中执行。 -
多线程:1 个进程中可以开启多条线程。每条线程可以(同时)并发执行不同的任务。
多线程可以提高程序的执行效率。
多线程的原理
同一时间,cpu 只能处理1条线程,只有1条线程在工作(执行)。
多线程并发执行,其实是 cpu 快速的在多条线程之间调度(切换)。
多线程的优缺点
优点
* 能适当的提高程序的执行效率。
* 能适当提高资源的利用率。(cpu 和 内存的利用率)
缺点
* 开启的线程需要占用一定的内存空间,(默认每一条线程占用 512kb的内存)
开启大量的线程,会占用大量的内存空间,降低程序的性能。
* 线程越多,cpu 在调度线程上的开销就越大。
* 线程越多,就越耗电(手持设备必须考虑这个问题)
* 程序设计更加复杂: 线程间通讯,多线程的数据共享。
线程在 5 到 6 条之间是比较合理的。
iOS 中多线程技术的使用
1、主线程
默认会开启1一条线程,称之为主线程。 iOS 中称之为 UI线程
(在 iOS 开发中所有视图更新的操作都是在 主线程中完成的)
主线程的主要作用
- 显示、刷新 ui 界面
- 处理 UI 事件(点击,滚动,退拽)
使用注意
- 将耗时操作放在后台线程。
2、 iOS 中多线程技术
pthread : (纯属打酱油的)
- 多线程的 api
- 适用 unix ,linex , windows
- c 语言
- 跨平台
- 难度大
- 程序员管理生命周期
*** 几乎不用
NSThread:
- 适用简单
- 简单易用,可以直接操作线程。
- oc 的
- 偶尔适用
- 程序员管理生命周期
GCD
- 替代 NSThread 等多线程技术
- 充分利用设备多核技术
- c
- 经常适用
- 系统自动管理线程生命周期
NSOperation
- 基于 gcd 的封装
- 比 gcd 简单
- 更加面向对象
- 系统自动管理线程生命周期
- 经常适用
推荐博客: