ios-多线程

GCD中的dispatch_block_cancel全解

2017-08-05  本文已影响506人  山水域

现在在iOS8之后,提交到gcd队列中的dispatch block也可取消了,只需要简单的调用dispatch_block_cancel传入想要取消的block即可:


dispatch_queue_t queue = dispatch_queue_create("queue", DISPATCH_QUEUE_SERIAL);
dispatch_block_t block1 = dispatch_block_create(0, ^{
    NSLog(@"block1 begin");
    [NSThread sleepForTimeInterval:3];
    NSLog(@"block1 end");
});

dispatch_block_t block2 = dispatch_block_create(0, ^{
    NSLog(@"block2 ");
});

dispatch_async(queue, block1);
dispatch_async(queue, block2);
//取消执行block2
dispatch_block_cancel(block2);

可以看到如下的执行结果,block2不再执行了。

GCDTests[17271:902981] block1 begin
GCDTests[17271:902981] block1 end
上一篇 下一篇

猜你喜欢

热点阅读