Skip to content

Instantly share code, notes, and snippets.

@joshaber
Created March 23, 2013 15:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save joshaber/5228077 to your computer and use it in GitHub Desktop.
Save joshaber/5228077 to your computer and use it in GitHub Desktop.
Parallel dependent tasks
__block NSArray *databaseObjects;
__block NSArray *fileContents;
NSOperationQueue *backgroundQueue = [[NSOperationQueue alloc] init];
NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{
databaseObjects = [databaseClient fetchObjectsMatchingPredicate:predicate];
}];
NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{
NSMutableArray *filesInProgress = [NSMutableArray array];
for (NSString *path in files) {
[filesInProgress addObject:[NSData dataWithContentsOfFile:path]];
}
fileContents = [filesInProgress copy];
}];
NSBlockOperation *finish = [NSBlockOperation blockOperationWithBlock:^{
[self finishProcessingDatabaseObjects:databaseObjects fileContents:fileContents];
NSLog(@"Done processing");
}];
[finish addDependency:operation1];
[finish addDependency:operation2];
[backgroundQueue addOperation:operation1];
[backgroundQueue addOperation:operation2];
[backgroundQueue addOperation:finish];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment