美文网首页ios-多线程
GCD中的dispatch_block_cancel全解

GCD中的dispatch_block_cancel全解

作者: 山水域 | 来源:发表于2017-08-05 09:35 被阅读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

相关文章

网友评论

    本文标题:GCD中的dispatch_block_cancel全解

    本文链接:https://www.haomeiwen.com/subject/pdebtxtx.html