iOS 多线程的使用(Operation)
来源:互联网 发布:淘宝发布宝贝教程图解 编辑:程序博客网 时间:2024/05/29 02:33
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
不能直接Operation是因为它里面没有直接操作的方法只是一个基类 (抽象类)
NSInvocationOperation *invocation0 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(act:) object:@"invocation0"];
如果单独使用Operation必须手动启动
[invocation start];
Operation是在当前线程去执行(同步执行)
NSInvocationOperation *invocation1 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(act:) object:@"invocation1"];
NSInvocationOperation *invocation2 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(act:) object:@"invocation2"];
NSInvocationOperation *invocation3 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(act:) object:@"invocation3"];
NSInvocationOperation *invocation4 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(act:) object:@"invocation4"];
NSBlockOperation *blockOperation = [NSBlockOperation blockOperationWithBlock:^{
具体执行的方法 任务
[self act:@"blockOperation"];
}];
添加操作
NSBlockOperation的操作数大于1 的时候 会开辟线程去执行
[blockOperation addExecutionBlock:^{
[self act:@"blockOperation2"];
}];
[blockOperation start];
operation默认在当期线程去执行 (同步执行)
可以使用线程队列NSOperationQueue去管理线程 (默认会开辟线程去执行) 异步执行 不用手动去启动线程
NSOperationQueue *queue = [[NSOperationQueue alloc]init];
可以线程队列的最大并发数(最多允许多少操作同时执行)
queue.maxConcurrentOperationCount = 3;
设置Operation的依赖关系
[invocation1 addDependency:invocation0];
[invocation2 addDependency:invocation1];
[invocation3 addDependency:invocation2];
[invocation4 addDependency:invocation3];
[blockOperation addDependency:invocation4];
[queue addOperation:invocation0];
[queue addOperation:invocation1];
[queue addOperation:invocation2];
[queue addOperation:invocation3];
[queue addOperation:invocation4];
[queue addOperation:blockOperation];
}
- (void)act:(id)sender
{
NSLog(@"%@%@",[NSThread currentThread],sender);
}
@end
- iOS 多线程的使用(Operation)
- iOS多线程1 Operation
- iOS 多线程 (GCD,Operation,Runloop)
- iOS 多线程 (GCD,Operation,Runloop)
- iOS 多线程 (GCD,Operation,Runloop)
- 多线程(GCD、Operation、NSThread的区别)
- iOS多线程编程篇: Operation 对象 与 Operation Queue
- IOS 多线程初探(二) - Operation Object
- iOS多线程编程之Operation Queues
- iOS多线程的使用
- iOS 多线程的使用
- iOS 多线程的使用(GCD)
- 多线程Operation
- iOS 多线程开发之OperationQueue(一)概念+两种Operation
- iOS GCD 多线程的使用
- iOS 多线程GCD的使用
- iOS 多线程的使用情况
- iOS中多线程的使用
- Java数据类型和MySql数据类型对应表
- C++ Boost Thread 编程指南
- 计算机组成原理前四章总结
- Linux基本命令(1)
- leetcode118 and 119 Pascal's Triangle
- iOS 多线程的使用(Operation)
- Tomcat中的JSTL配置与使用
- CodeForces 416A Guess a number!
- 字符串中的字符是否唯一(
- 零基础学python-19.8 生成器表达式:当迭代器遇上列表解析
- Git教程
- HDU 5444Elven Postman 2015 ACM/ICPC Asia Regional Changchun Online
- HDU - 2713 Jumping Cows(DP水题)
- 构造派生类