Skip to content

Ocean07/CustomOperation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

CustomOperation

依次执行队列中的异步任务,一个异步task完成之后才会进行下一个task

##向串行队列中添加异步任务,不控制

- (void)addOperations {
    NSLog(@"start");
    for (NSInteger i = 0; i < 10; i ++) {
        NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{
            // 执行异步耗时任务(网络请求)
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
                [NSThread sleepForTimeInterval:3];
                NSLog(@"complete -> %ld", (long)i);
            });
        }];
        
        [self.queue addOperation:op];
    }
}

运行情况:完成情况打印如下

2019-09-03 07:23:54.805525+0800 Test[73606:5578284] start
2019-09-03 07:23:57.886884+0800 Test[73606:5578440] complete -> 0
2019-09-03 07:23:57.887000+0800 Test[73606:5578443] complete -> 3
2019-09-03 07:23:57.887063+0800 Test[73606:5578465] complete -> 4
2019-09-03 07:23:57.887080+0800 Test[73606:5578466] complete -> 5
2019-09-03 07:23:57.887164+0800 Test[73606:5578468] complete -> 7
2019-09-03 07:23:57.887164+0800 Test[73606:5578467] complete -> 6
2019-09-03 07:23:57.887239+0800 Test[73606:5578469] complete -> 8
2019-09-03 07:23:57.886928+0800 Test[73606:5578441] complete -> 2
2019-09-03 07:23:57.887322+0800 Test[73606:5578470] complete -> 9
2019-09-03 07:23:58.143936+0800 Test[73606:5578442] complete -> 1

##向串行队列中添加异步任务,控制完成情况

- (void)addCustomOperations {
    for (NSInteger i = 0; i < 10; i ++) {
        CusOperation *op = [[CusOperation alloc] init];
        __weak typeof(op) weakOp = op;
        op.executeBlock = ^{
            __strong typeof(weakOp) strongOp = weakOp;
            // 执行异步耗时任务(网络请求)
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
                [NSThread sleepForTimeInterval:3];
                NSLog(@"cust complete -> %ld", (long)i);
                [strongOp operationFinished];
            });
        };
        
        [self.queue addOperation:op];
    }
}

运行情况:一个task完成之后才会开始下一个

2019-09-03 07:29:27.446498+0800 Test[73735:5581333] cust complete -> 0
2019-09-03 07:29:30.449199+0800 Test[73735:5581333] cust complete -> 1
2019-09-03 07:29:33.541758+0800 Test[73735:5581332] cust complete -> 2
2019-09-03 07:29:36.641697+0800 Test[73735:5581332] cust complete -> 3
2019-09-03 07:29:39.712813+0800 Test[73735:5581332] cust complete -> 4
2019-09-03 07:29:42.779760+0800 Test[73735:5581333] cust complete -> 5
2019-09-03 07:29:45.879497+0800 Test[73735:5581334] cust complete -> 6
2019-09-03 07:29:48.958792+0800 Test[73735:5581334] cust complete -> 7
2019-09-03 07:29:52.047463+0800 Test[73735:5581334] cust complete -> 8
2019-09-03 07:29:55.113749+0800 Test[73735:5581333] cust complete -> 9

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published