一.
NSBlockOperation *blockOperation1 = [[NSBlockOperation alloc] init];
[blockOperation1 addExecutionBlock:^{
sleep(10);
NSLog(@"------111----%@---", [NSThread currentThread]);
}];
NSBlockOperation *blockOperation2 = [[NSBlockOperation alloc] init];
[blockOperation2 addExecutionBlock:^{
NSLog(@"------222----%@---", [NSThread currentThread]);
}];
[blockOperation2 addDependency:blockOperation1];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue setMaxConcurrentOperationCount:3];
[queue addOperation:blockOperation1];
[queue addOperation:blockOperation2];
输出:
2017-05-10 10:59:45.944 Test[56988:15115122] ------111----<NSThread: 0x600000069600>{number = 3, name = (null)}---
2017-05-10 10:59:45.944 Test[56988:15115121] ------222----<NSThread: 0x61000006c7c0>{number = 4, name = (null)}---
二.
NSBlockOperation *blockOperation1 = [[NSBlockOperationalloc] init];
[blockOperation1 addExecutionBlock:^{
sleep(10);
NSLog(@"------111----%@---", [NSThread currentThread]);
}];
NSBlockOperation *blockOperation2 = [[NSBlockOperation alloc] init];
[blockOperation2 addExecutionBlock:^{
[blockOperation1 waitUntilFinished]; //blockOperation1 完成之后才会执行下面的语句
NSLog(@"------222----%@---", [NSThread currentThread]);
}];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue setMaxConcurrentOperationCount:3];
[queue addOperation:blockOperation1];
[queue addOperation:blockOperation2];
输出:
2017-05-10 11:00:47.358 Test[57014:15117738] ------111----<NSThread: 0x610000071580>{number = 3, name = (null)}---
2017-05-10 11:00:47.359 Test[57014:15117761] ------222----<NSThread: 0x610000073700>{number = 4, name = (null)}---