IOS中的多线程【二】— NSOperation和NSOperationQueue

NSOperationQueue是一套基于Objective-c语言的API。

GCD与NSOperationQueue的优缺点:

NSOperationQueue:比较安全

GCD:没有NSOperationQueue安全,但使用起来简单,快速,还提供了一些操控底层的方法。实际开发中还是以GCD为主。

NSOperationQueue实现多线程流程

1.定义一个任务队列。

2.定义一个任务。

3.把任务添加到队列中。一旦任务被添加到队列中,任务会马上被调度执行。

任务队列(NSOperationQueue)只有主队列和自定义队列两种

NSOperationQueue的一个实例对象就是一个自定义队列,主队列通过[NSOperationQueue mainQueue]获取。

NSOperationQueue实现的自定义队列都是并发的


任务(NSOperation)

NSOperation是一个抽象类,定义一个任务对象只能继承并重写它,苹果也提供了两个它的子类NSInvocationOperation、NSBlockOperation,我们一般用这个子类。

NSOperationQueue实现的自定义队列都是并行,下面是

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

//1.定义4个队列

NSBlockOperation
* operation1 = [NSBlockOperation
blockOperationWithBlock:^

                                {

                                    NSLog(@"1.下载图片");

                                }];

NSBlockOperation
* operation2 = [NSBlockOperation
blockOperationWithBlock:^

                                 {

                                     NSLog(@"2.修饰图片");

                                 }];

NSBlockOperation
* operation3 = [NSBlockOperation
blockOperationWithBlock:^

                                 {

                                     NSLog(@"3.保存图片");

                                 }];

NSBlockOperation
* operation4 = [NSBlockOperation
blockOperationWithBlock:^

                                 {

                                     NSLog(@"4.显示图片");

                                 }];

//2.设置依赖关系,保证顺序执行。

[operation2 addDependency:operation1];

[operation3 addDependency:operation2];

[operation4 addDependency:operation3];

//3.将任务添加到队列中去,并开始执行。

[self.queue addOperation:operation1];

[self.queue addOperation:operation2];

[self.queue addOperation:operation3];

//更新UI操作在主队列中执行,依赖关系是可以跨队列的。

[[NSOperationQueue
mainQueue] addOperation:operation4];

IOS中的多线程【二】— NSOperation和NSOperationQueue,布布扣,bubuko.com

时间: 2024-08-02 02:42:20

IOS中的多线程【二】— NSOperation和NSOperationQueue的相关文章

iOS中实现多线程的的方法 NSOperationQueue

NSOperationQueue 1.简介 一个NSOperation对象可以通过调用start方法来执行任务,默认是同步执行的.也可以将NSOperation添加到一个NSOperationQueue(操作队列)中去执行,而且是异步执行的. 创建一个操作队列: 2.添加NSOperation到NOperationQueue中 添加一个operation 添加一组operation 添加一个block形式的operation

OS X 和iOS 中的多线程技术(下)

OS X 和iOS 中的多线程技术(下) 上篇文章中介绍了 pthread 和 NSThread 两种多线程的方式,本文将继续介绍 GCD 和 NSOperation 这两种方式.. 1.GCD 1.1 什么是GCD GCD 全称 Grand Central Dispatch,可译为"牛逼的中枢调度器" GCD 基于纯 C 语言,内部封装了强大的函数库 1.2 使用 GCD 有什么优势 GCD 是苹果公司为多核的并行运算提出的解决方案 GCD 会自动利用更多的CPU内核 (如 二核 ,

ios中的多线程的用法总结

ios中的多线程的用法总结 1.进程的基本概念 (1)每一个进程都是一个应用程序,都有独立的内存空间,一般来说一个应用程序存在一个进程,但也有多个进程的情况 (2)同一个进程的线程共享内存中的内存和资源 2.多线程的基本概念 (1)每一个程序都有一个主线程,程序启动时创建(调用main来启动). (2)多线程技术表示,一个应用程序有多个线程,使用多线程能提供CPU的利用率,防止主线程被堵塞. (3)任何有可能堵塞主线程的任务不要在主线程执行(如:访问网络). (4)主线程的生命周期和应用程序绑定

iOS开发笔记--iOS中的多线程

摘要 本文主要介绍iOS开发中的三种多线程技术:NSThread, NSOperation/NSOperationQueue, GCD.以及在多线程编程中的注意点和小技巧. 多线程 NSThread NSOperation/NSOperationQueue GCD 目录[-] iOS中的多线程 iOS的三种多线程技术特点: GCD基本思想 队列: 操作: 不同队列中嵌套同步操作dispatch_sync的结果: 同步操作dispatch_sync的应用场景: GCD优点: GCD队列: NSOp

iOS中的多线程及GCD

多线程中的一些概念 //任务:代码段  方法  线程就是执行这些任务 //NSThread类 创建线程 执行线程 [NSThread isMainThread]//判断是否是主线程 #import "AppDelegate.h" @implementation AppDelegate -(void)dealloc { [_window release]; [super dealloc]; } - (BOOL)application:(UIApplication *)applicatio

iOS中的多线程

iOS中的多线程 首先来了解什么是多线程,进程和线程的区别. 进程: 正在进行中的程序被称为进程,负责程序运行的内存分配; 每一个进程都有自己独立的虚拟内存空间. 线程:(主线程最大占1M的栈区空间,每条子线程最大占512K的栈区空间) 线程是进程中一个独立的执行路径(控制单元); 一个进程中至少包含一条线程,即主线程; 可以将耗时的执行路径(如网络请求)放在其他线程中执行; 线程不能被杀掉,但是可以暂停/休眠一条线程. 创建线程的目的: 开启一条新的执行路径,运行指定的代码,与主线程中的代码实

OS X 和iOS 中的多线程技术(上)

OS X 和iOS 中的多线程技术(上) 本文梳理了OS X 和iOS 系统中提供的多线程技术.并且对这些技术的使用给出了一些实用的建议. 多线程的目的:通过并发执行提高 CPU 的使用效率,进而提供程序运行效率. 1.线程和进程 进程 什么是进程 进程是指在计算机系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行中其专用且受保护的内存空间内 比如同时打开 Xcode .Safari ,系统就会分别启动两个进程 通过活动监视器可以查看Mac系统中所开启的进程 线程 什么是线程 一

iOS中的多线程 NSOperation

在ios中,使用多线程有三种方式,分别是:NSThread.NSOperation和NSOperationQueue.GCD,在本节,主要讲解一下NSOperation的使用. NSOperation和NSOperationQueue这种方式实际上是将NSOperation的对象放到一个NSOperationQueue队列中,然后依次启动操作,类似于线程池的使用. 在使用的过程中,NSOperation的操作使用的是它的子类,分别是NSInvocationOperation和NSBlockOpe

【iOS开发】多线程下NSOperation、NSBlockOperation、NSInvocationOperation、NSOperationQueue的使用

http://blog.csdn.net/crycheng/article/details/21799611 本篇文章主要介绍下多线程下NSOperation.NSBlockOperation.NSInvocationOperation.NSOperationQueue的使用,列举几个简单的例子. 默认情况下,NSOperation并不具备封装操作的能力,必须使用它的子类,使用NSOperation子类的方式有3种: 1> 自定义子类继承NSOperation,实现内部相应的方法 2> NSB