我必须对大量文件执行复杂的操作。幸运的是,枚举顺序并不重要,并且可以在不锁定的情况下并行完成作业。并发文件枚举
是否该平台提供了一种方式来做到这一点?由于缺乏更好的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
@Wain你能否阐述为什么(在答案中,也许)?我有兴趣使用尽可能多的内核来并行处理文件。 – hpique