gpt4 book ai didi

ios - 暂停和恢复 Grand Central Dispatch 线程

转载 作者:行者123 更新时间:2023-11-28 20:04:12 25 4
gpt4 key购买 nike

我正在使用 Grand Central Dispatch 在后台运行一个进程。我想知道如何暂停、恢复和停止该后台线程。我试过了

dispatch_suspend(background_thread);
dispatch_resume(background_thread);

但是这些功能对我没有帮助,它一直在运行。请有人帮助我。

最佳答案

你好像有点糊涂了。线程的直接操作不是 GCD API 的一部分。您通常操作的 GCD 对象是队列,而不是线程。您将 block 放入队列中,然后 GCD 在它需要的任何线程上运行这些 block 。1

此外,the dispatch_suspend man page是这样说的:

The dispatch framework always checks the suspension status before executing a block, but such changes never affect a block during execution (non-preemptive).

换句话说,当队列正在运行一个 block 时,GCD 不会挂起队列。它只会在队列位于 block 之间时挂起队列。

我不知道有任何公共(public) API 可以让您在不与该线程上运行的函数合作的情况下停止线程(例如,通过设置一个在该线程上定期检查的标志)。

如果可能,您应该分解长时间运行的计算,以便您可以在连续的 block 中逐步处理它。然后你可以暂停运行这些 block 的队列。


脚注 1. 主队列除外。如果您将一个 block 放在主队列上,GCD 只会在主线程上运行该 block 。

关于ios - 暂停和恢复 Grand Central Dispatch 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22652053/

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