gpt4 book ai didi

macos - 如何使用GCD删除已调度的 block

转载 作者:行者123 更新时间:2023-12-03 17:38:47 25 4
gpt4 key购买 nike

我有这个代码:

_myQueue = dispatch_queue_create("com.myapp", DISPATCH_QUEUE_SERIAL);
_mainQueue = dispatch_get_main_queue();

很多这个 block 需要几秒钟(或几分钟)

dispatch_async(_myQueue,
^{
if(canRun){
dispatch_async(_mainQueue,^{/* updating interface here */});
// code here
}
});

我的应用程序有一个“停止”按钮来尝试停止所有作业,并且 BOOL“canRun”帮助我执行所有 block 而不执行任何操作......但我总是必须等待每个 block 的完成直到队列达到0。有没有办法立即“清理”队列而不是这样做?目的是停止进程并重新开始,而无需关闭并重新打开应用程序。该项目在 ARC 下运行。

最佳答案

如果您采取一些额外的步骤来创建dispatch_source对象并保留对其的引用,则可以取消它们。

初学者请查看此内容

https://developer.apple.com/library/mac/documentation/Performance/Reference/GCD_libdispatch_Ref/index.html

有暂停、恢复、取消的功能。

关于macos - 如何使用GCD删除已调度的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27648855/

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