iOS多线程有哪几种?

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相比其他系统提供的多线程方法更加有效。




你可能感兴趣的:(iOS多线程有哪几种?)