ios - 暂停调度队列是否会暂停其目标队列?

标签 ios multithreading grand-central-dispatch

我想创建两个串行队列 A 和 B。其中队列 B 是队列 A 的目标。我想在 B 上排队一些 block ,并暂停它直到我准备好执行它们,但是我想继续执行队列 A 上的 block 。

如果我暂停 B,这是否也会暂停它的目标队列(队列 A)?

我的想法是我想安排这些特定的 block (在队列 B 上)在以后(未指定的)日期执行,但是我不希望它们同时运行(这涉及核心数据 ^_^)并且我不想处理信号量。但是我希望队列 A 继续处理它的 block ,而 B 被暂停

如果不清楚这里有一些示例代码

dispatch_queue_t queueA = dispatch_queue_create("app.queue.A");
dispatch_queue_t queueB = dispatch_queue_create("app.queue.B");

dispatch_set_target_queue( queueB, queueA );

dispatch_suspend( queueB );
/*
*   Add a bunch of blocks to queue B or A 
*   Where the ones added to A should execute immediately
*/


//Wait till blocks on queue A have finished and start up B
dispatch_resume( queueB );

dispatch_release(queueA);
dispatch_release(queueB);

最佳答案

dispatch_set_target_queue(queueB, queueA);
dispatch_suspend(queueB);

queueB 挂起,queueA 未挂起。

dispatch_set_target_queue(queueB, queueA);
dispatch_suspend(queueA);

queueA 和 queueB 被挂起。

关于ios - 暂停调度队列是否会暂停其目标队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6603101/

相关文章:

ios - 在 Swift 中创建多个倒数计时器

iphone - 一个 XIB 文件中的多个 View (一个窗口)

c++ - std::mutex 是否支持拥有它的线程?

c# - Web 应用程序中的数据访问应该在不同的任务上运行吗?

ios - 在 Swift 中调用串行队列中的函数

ios - 如何防止 temporaryContext 与 migratePersistentStore 同时运行

ios - 核心数据和数据完整性 : read operations vs write operations. 如何保护?

ios - 如何去掉 UITableView 之前的空白?

ios - 用 Swift 初始化 UIViewController 的子类?

c++ - 如何正确销毁从另一个线程运行的窗口?