如何为并发执行处理大量数据(NSOperationQueue或Blocks)

时间:2012-06-13 06:52:13

标签: ios concurrency queue objective-c-blocks nsoperationqueue

我必须立即处理大量数据。因此我使用Blocks或NSOperationQueue。 一切正常,直到要处理的数据量超过内存限制。 这会导致应用程序即时崩溃。

原因是我必须处理的数据包大约是。 100KB大。 超过300-400个此操作在队列中排队后,将超出内存限制。

现在我想知道你们如何处理类似的问题? BTW:我没有找到限制队列大小的方法,除非我添加同步任务,这将导致堆栈在返回之前完成。

提前感谢任何提示。

1 个答案:

答案 0 :(得分:1)

NSOperation 大致相当于ThreadPoolExecutor。所以你已经在使用它了。如果你的内存耗尽,你的并发方法可能不是问题。

听起来你正在构建300-400个任务(NSOperations,或GCD块),并且在执行之前耗尽内存。为什么不在添加它们时执行它们?这就是NSOperationQueue和GCD队列 for ,就像ThreadPoolExecutor一样。