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];