iOS中多线程的实现方案

在iOS开发的过程中,我们经常会使用到多线程,将那些耗时操作放到子线程中去执行。在iOS中涉及到的多线程有4种,分别是pthread(POSIX Thread)、NSThread、GCD和NSOperation

pthread(POSIX Thread):纯C语言编写,是一套通用的多线程API,适用于Unix,Linux,Windows,Mac等系统,使用难度比较大,需要程序员手动管理线程的生命周期,这个方法在iOS开发中也很少用,几乎不用,在底层的开发中有可能会用到,以为它可以跨平台。

NSThread:用OC语言写的,是面向对象的线程管理机制,可以直接操作线程对象。它也需要程序员手动管理线程的生命周期,在iOS开发中偶尔会使用

GCD:使用纯C语言开发的,可以完全代替NSThread等线程技术,而且还可以充分利用设备的多核,不用程序员去手动管理线程的生命周期,系统会自动管理,在iOS开发中经常使用。

GCD的使用步骤:

1.定制任务

2.将任务添加到队列中,GCD会自动将队列中的任务取出,放到对应的线程中执行,任务0的取出遵循队列的FIFO(先进先出)原则

GCD中有2个用来执行任务的函数:

同步:dispatch_sync(duspatch_queue_t queue, dispatch_block_t block);

参数解释:

参数1:queue表示队列,参数2:block表示任务



NSOperation:基于GCD(底层是GCD),比GCD多了一些简单实用的功能,而且是用OC语言开发的,可以直接面向对象,在iOS开发中经常使用。


NSOperation和NSOperationQueue

1.NSOperation:

(1)它是一个抽象类,执行任务的是它的子类NSInvocationOperation和NSBlockOperation,这两个子类相当于一个方法选择器,他俩发起的任务并不是在子线程中执行

(2)NSOperation和它的子类,本身并不会创建线程,没有主线程和子线程之分,可以在任何线程中使用,通常和NSOperationQueue结合使用。

2.NSOperationQueue:操作队列

NSOperationQueue相当于一个线程管理器,将NSOperation和子类的对象放入队列中,然后由队列负责派发任务,所以NSOperationQueue并不是一个线程,但是可以设置队列中运行线程的数量。

你可能感兴趣的:(iOS中多线程的实现方案)