2011-07-06 46 views
7

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

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

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

回答

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

等级队列B被暂停,但queueA不暂停。

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

queueA和queueB被挂起。