1 后台的操作队列
NSOperationQueue* concurrentQueue = [[NSOperationQueue alloc] init];
concurrentQueue.maxConcurrentOperationCount = 10;
[concurrentQueue addOperationWithBlock:^{
UploadHighScores();
}];
[concurrentQueue addOperationWithBlock:^{
SaveGame();
}];
[concurrentQueue addOperationWithBlock:^{
DownloadMaps();
}];
2 前端的操作队列
NSOperationQueue* mainQueue = [NSOperationQueue mainQueue];
mainQueue.maxConcurrentOperationCount = 2;
[mainQueue addOperationWithBlock:^{
ProcessPlayerInput();
}];
3 操作之间互相依赖
NSBlockOperation* firstOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"First operation");
}];
NSBlockOperation* secondOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"Second operation (depends on third operation and first operation)");
}];
NSBlockOperation* thirdOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"Third operation");
}];
[secondOperation addDependency:thirdOperation];
[secondOperation addDependency:firstOperation];
[[NSOperationQueue mainQueue] addOperations:@[firstOperation,secondOperation, thirdOperation] waitUntilFinished:NO];