#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, strong) NSOperationQueue *queue;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self opDemo];
}
- (void)opDemo {
for (int i = 0; i < 200; ++i) {
[self.queue addOperationWithBlock:^{
//设置休眠
[NSThread sleepForTimeInterval:1.f];
NSLog(@"%@ -- %d",[NSThread currentThread],i);
}];
}
}
// 暂停 or 继续
- (IBAction)pauseAndContinue:(id)sender {
// 如果队列中没有操作,不让暂停
if (self.queue.operationCount == 0) {
NSLog(@"队列中没有操作,不需要暂停");
return;
}
/*
1. 暂停的是队列,如果操作已经在执行,不受影响,只会暂停还没有(准备)执行的操作
*/
self.queue.suspended = !self.queue.isSuspended;
if (self.queue.isSuspended)
{
NSLog(@"暂停");
}else{
NSLog(@"继续");
}
}
- (IBAction)cancelAllOperation:(id)sender {
NSLog(@"取消全部");
// 取消所有的操作(准备执行,也就是还没执行的操作)
// 想要取消正在执行:只能通过自定义操作来完成NSOperation
[self.queue cancelAllOperations];
}
- (NSOperationQueue *)queue {
if (_queue == nil) {
_queue = [[NSOperationQueue alloc]init];
// 设置最大并发
/*
1. 最大并发数不代表是线程数
2. 最大并发数是同时开启多少条线程
*/
_queue.maxConcurrentOperationCount = 2;
}
return _queue;
}
@end
多线程:NSOperation 的高级功能
最新推荐文章于 2024-09-10 13:31:17 发布