2个NSOperation对象的联合
问题描述:
我正在寻找允许同时处理2个线程(NSOperations)的模式,并且只有在两者都完成后才返回。使这变得复杂,我需要这些双重操作的队列。2个NSOperation对象的联合
所以,我的想法是有一个NSOperation包含一个NSOperationQueue来处理两者。然后NSOperation队列将同时执行两次,当队列为空时提醒我,并且我们可以继续前进。
寻找周围的想法,或更好的方式来完成这项任务/上述的陷阱。
在此先感谢!
罗布
答
您可以使用NSOperation
的依赖性支持来处理这个。基本上你创建运行要当第2个操作完成运行的代码第三操作,那么前两个操作的依赖增加了第三次手术,并添加他们都到队列:
NSOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"op1!");
}];
NSOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"op2!");
}];
NSOperation *completionOp = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"op1 and op2 are complete!");
}];
[completionOp addDependency:op1];
[completionOp addDependency:op2];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation:completionOp];
[queue addOperation:op1];
[queue addOperation:op2];
其输出:
op1!
op2!
op1 and op2 are complete!
需要注意的是,即使是completionBlock
添加到队列第一,这是因为它有op1
和op2
依赖的运行最后。
正是我在找什么!!!! – 2014-11-03 12:00:48