微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我想创建两个串行队列A& B.队列B是队列A的目标.我想在B上排队一些块,并暂停它直到我准备执行它们,但是我想继续在队列A上执行块.

如果我暂停B,这还会暂停它的目标队列(队列A)吗?

我的想法是,我想安排这些特定的块(在队列B上)在稍后(未指定的)日期执行但是我不希望它们同时运行(这涉及核心数据^ _ ^)而我不这样做想要处理信号量.但我希望队列A继续处理它的块,而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被挂起.

原文地址:https://www.jb51.cc/iOS/331990.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐