【发布时间】:2013-10-19 17:31:08
【问题描述】:
我必须对大量文件执行复杂的操作。幸运的是,枚举顺序并不重要,作业可以并行完成而无需锁定。
平台是否提供了执行此操作的方法?由于缺乏更好的 API,我在考虑:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSArray *paths = [[NSFileManager defaultManager] subpathsAtPath:folder];
[paths enumerateObjectsWithOptions:NSEnumerationConcurrent
usingBlock:^(NSString *path, NSUInteger idx, BOOL *stop) {
// Complex operation
}];
}];
有没有更好的办法?
【问题讨论】:
-
我就是这么写的,也很想知道有没有更好的办法。
-
你在寻找多少并发。您的代码将在后台运行,但不会同时运行多个文件操作。你也不应该在后台线程上使用
defaultManager。 -
@Wain 您能否详细说明原因(也许在答案中)?我有兴趣使用尽可能多的内核来并行处理文件。
标签: ios objective-c macos concurrency nsfilemanager