【发布时间】:2013-05-21 13:44:02
【问题描述】:
我有一个 NSOperationQueue,里面有 NSOperation 对象
NSOperationQueue *aQueue = [[ NSOperationQueue alloc ] init];
[aQueue setMaxConcurrentOperationCount:3];
for (int index=0; index<=5; index++) {
MYOperation *anOperation = [[MYOperation alloc] init];//MYOperation subclass from NSOperation
[aQueue addOperation:anOperation];
}
NSLog(@"Number of Operations:%d",[aQueue operationCount]);//It gives 5 count
队列一次只允许执行 3 个操作(根据定义)。 当我尝试添加第 4 个操作时,它会添加到队列中,但该操作从未执行并被丢弃。
问题:为什么队列丢弃操作的次数多于其并发值?
【问题讨论】:
-
@MikePollard,为什么队列丢弃的操作多于它的并发值?
-
以下是类文档中的内容:
The NSOperation class is an abstract class you use to encapsulate the code and data associated with a single task。您不能直接使用NSOperation类,您必须覆盖它并设置一些它将运行的操作。 -
第四次操作被丢弃的证据在哪里?第五个和第六个有什么关系?
-
如果可能,还显示
MyOperation的来源,并确保操作完成(如果它们是并发的,则在它们完成时设置isFinished,否则它们将保留阻塞队列)。
标签: iphone ios multithreading nsoperation nsoperationqueue