NSOperation 多线程
//创建一个队列 非 主队列 如果 operation 调用 start方法的话 就只会在主线程中执行
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//最大并发数 同一时间最多开多少个线程 但是添加的任务都会完成
queue.maxConcurrentOperationCount = 3;
NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"任务1");
}];
[operation1 addExecutionBlock:^{
NSLog(@"任务4");
}];
NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"任务2");
}];
NSBlockOperation *operation3 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"任务3");
}];
//将操作添加到队列中,自动异步并发执行
[queue addOperation:operation1];
[queue addOperation:operation2];
[queue addOperation:operation3];
//或者 也是在子线程
[queue addOperationWithBlock:^{
NSLog(@"任务5");
}];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//最大并发数 同一时间最多开多少个线程 但是添加的任务都会完成
queue.maxConcurrentOperationCount = 3;
NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"任务1");
}];
[operation1 addExecutionBlock:^{
NSLog(@"任务4");
}];
NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"任务2");
}];
NSBlockOperation *operation3 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"任务3");
}];
//将操作添加到队列中,自动异步并发执行
[queue addOperation:operation1];
[queue addOperation:operation2];
[queue addOperation:operation3];
//或者 也是在子线程
[queue addOperationWithBlock:^{
NSLog(@"任务5");
}];