gpt4 book ai didi

iphone - 我如何终止/暂停/关闭 GCD 中的异步 block ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:17:09 25 4
gpt4 key购买 nike

我已经实现了一个使用 GCD 异步分派(dispatch)的 block ,如下所示:

__block BOOL retValue;
dispatch_async(dispatch_get_global_queue(0, 0), ^{
retValue = [self GCDHandler:actionName WithServiceType:serviceType :arguments];
});

return retValue;

如果它运行的时间比我想要的要长,我该如何取消这样的 block ?有没有办法取消 GCD 分派(dispatch)的 block ,或者为它们提供超时?

最佳答案

没有内置的方法来取消 GCD block 。他们宁愿一劳永逸。我过去这样做的一种方法是为 block 提供“ token ”。

- (NSString*)dispatchCancelable:(dispatch_block_t)block
{
dispatch_async(dispatch_get_global_queue(0, 0), ^{
if (!checkIfCanceled)
block();
}
return blah; //Create a UUID or something
}

- (void)cancelBlock:(NSString*)token
{
//Flag something to mark as canceled
}

关于iphone - 我如何终止/暂停/关闭 GCD 中的异步 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9294139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com