NSOperation创建队列

 1 #pragma mark - NSOperation
 2
 3     //NSOperation不能直接进行多线程的创建,需要帮助:NSOperationQueue
 4     // 使用NSOperation的第一个子类去创建线程:NSInvocationOperation
 5     NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(test) object:nil];
 6
 7     // 在单独使用NSOperation的子类去创建线程的时候,需要启动才行
 8 //    [operation start];
 9     // 在使用NSOperation的子类去创建线程的时候,实际上线程没有真正意义上的创建
10
11
12     // 使用NSOperation的第二个子类创建子线程:NSBlockOperation
13     NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{
14
15         NSLog(@"我是block");
16         NSLog(@"??%@", [NSThread currentThread]);
17         NSLog(@"??%@", [NSThread mainThread]);
18     }];
19
20 //    [operation1 start];
21
22
23     // 需要把上面的两个线程,放到操作队列里面
24     // addOperation一旦将创建的对象加入到操作队列中,就不能调用start方法
25     NSOperationQueue *queue = [[NSOperationQueue alloc] init];
26
27     [queue addOperation:operation];
28     [queue addOperation:operation1];
29 }

// 最大的并发数量

// 当值设置为1的时候,可以叫做串行:即顺序执行

// 当值设置大于1的时候,叫做并行:多条通道同时进行各自的任务

queue.maxConcurrentOperationCount = 3;

时间: 2024-10-06 01:23:15

NSOperation创建队列的相关文章

【iOS开发-多线程】使用NSOperation创建线程(使用较多)

NSOperation NSOperation封装了GCD的一些操作,使用更加面向对象的方式实现多线程 创建多线程的步骤 先将需要执行的操作封装到一个NSOperation对象中 然后将NSOperation对象添加到NSOperationQueue中 系统会自动将NSOperationQueue中的NSOperation取出来 NSOperation是个抽象类,并不具备封装操作的能力,必须使用它的子类 NSInvocationOperation NSBlockOperation 自定义子类继承

用两个栈创建队列

1.第一种方法: 1 #define _CRT_SECURE_NO_WARNINGS 2 #include<iostream> 3 #include<stack> 4 using namespace std; 5 6 //Pop , push, front, back, empty; 7 template<class T> 8 class MyQueue 9 { 10 public: 11 //判断队列是否为空. empty 12 bool empty() 13 { 1

ASIHttpRequest:创建队列、下载请求、断点续传、解压缩

下面是我们今天要完成的任务: 下载指定链接的zip压缩文件 存放在Documents目录下 支持断点续传 显示下载进度 解压到指定目录 那就开始吧,首先我们要创建一个ASINetworkQueue全局队列,队列里可以添加请求,虽然今天只会用到一个请求,但我们迟早会用到队列,不妨现在就开始创建: - (void)viewDidLoad { queue = [[ASINetworkQueue alloc] init]; //设置支持较高精度的进度追踪 [queue setShowAccuratePr

iOS:操作队列实现多线程NSOperation

NSOperation具体使用:直接继承NSObject 它的子类有:NSBlockOperation.NSInvocationOperation 还有一个必须的类,队列,用来装创建的线程 NSOperationQueue 理解:这个方式是如何实现多线程呢?是通过操作队列来实现多线程的.即主线程是一个主队列,再创建一个队列并将其他的线程加入其中同步执行.如果对共享资源的争夺放在主线程队列中,则不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上:否则的话,仍需要关心数据同步的问

创建线程方式-NSOperation

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute

MSMQ学习笔记二——创建Message Queue队列

一.创建Message Queue队列的主要流程 1.定义MQQUEUEPROPS 结构: 2.设置消息队列属性: 3.初始化MQQUEUEPROPS 结构: 4.调用MQCreateQueue创建队列. 下面对MSDN上的创建Message Queue队列示例函数: HRESULT CreateMSMQQueue( LPWSTR wszPathName, PSECURITY_DESCRIPTOR pSecurityDescriptor, LPWSTR wszOutFormatName, DWO

队列的C++实现(数组)——创建-进队-出队-返回队首元素-清空队列栈-处理队列

队列的数组实现,从队尾进入,对头删除. 队列长度用标志变量size,它是独立于front和rear的一个变量.size == 0,队列为空.size == capacity,满队列. 一.结点声明 1 struct Node{ 2 int Capacity; 3 int Front; 4 int Rear; 5 int Size; 6 int *Array; 7 }; 8 typedef struct Node Queue; Capacity队列容量:Front,Rear为队列首元素和尾元素的数

多线程之-NSOperation

多线程之-NSOperation NSOperation是个抽象类,并不具备封装操作的能力,必须使用它的子类 NSInvocationOperation 如果直接执行NSInvocationOperation中的操作, 那么默认会在主线程中执行 // 创建队列 NSOperationQueue *queue = [[NSOperationQueue alloc] init]; // 创建操作 NSInvocationOperation *operation = [[NSInvocationOpe

iOS开发NSOperation 三:操作依赖和监听以及线程间通信

一:操作依赖和监听 #import "ViewController.h" @interface ViewController () @end @implementation ViewController /** * 1:NSOperation的使用:1:先创建队列NSOperationQueue:若不创建队列直接封装任务则默认在当前线程中串行执行任务,其队列分为两种主队列和非主队列,主队列和GCD中的主队列一样[NSOperationQueue mainQueue],而alloc in