1、多线程的分类
pthread
1、一套通用的多线程API
2、适用于Unix/Linux/Windows等系统
3、跨平台、可移植
4、使用难度大
5、使用语言:C语言
6、使用频率:几乎不适用
7、线程的生命周期:由开发者自己进行管理
NSThread
1、面向对象
2、简单易用,可直接操作线程
3、使用语言:OC语言
4、使用频率:偶尔使用
5、线程的生命周期:由开发者自己管理
GCD
1、替换NSThread等线程技术
2、充分利用了设备多核(自动)
3、使用语言:C语言
4、使用频率:经常使用
5、线程的生命周期:自动管理
NSOperation
1、基于GCD(底层是GCD)
2、比GCD多了一些简单实用的功能
3、使用更加面向对象
4、使用语言:OC语言
5、线程的生命周期:自动管理
多线程的原理:
同一时间,CPU只能处理一条线程,只有一条线程在工作(执行),多线程并发(同时)执行,其实是CPU快速的在多条线程之间调度(切换),如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象思考:如果线程足够多,CPU会在N多条线程之间调度,CPU会累死,消耗大量的CPU资源每条线程被调度的频率会降低(线程的执行效率降低)。
多线程的有点:
能适当提高程序的执行效率;
能适当提高资源利用率(CPU、内存利用率)
多线程的缺点:
线程需要占用一定的内存空间(默认情况下主线程占用1M子线程占用512k),如果开启大量的线程,会占用大量的内存空间,降低程序的性能,线程越多CPU在调度线程上的开销就越大程序设计更加复杂:比如线程之间的通信、多线程的数据共享
GCD优点:
GCD是一个轻量级的数据结构,以底层实现隐藏的神奇技术,我们可以通过GCD和block轻松实现多线程编程,有时候,GCD相比其他系统提供的多线程方法更加有效。