如何在GCD队列中获取任务列表?

时间:2012-03-13 02:54:55

标签: iphone ios ipad grand-central-dispatch

我在GCD中获得主队列如下所示,我在我的应用程序中添加了来自不同类的不同任务。

dispatch_queue_t queue = dispatch_get_global_queue (
    DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

现在我想知道仍有多少任务仍在GCD主队列中。

是否有任何方法可以在GCD队列中获取任务列表?

由于

2 个答案:

答案 0 :(得分:4)

这真的不是GCD的范例。例如,如果要跟踪某组操作,可以创建一个调度组并注册以在完成后收到通知,如本例所示。

dispatch_group_t taskGroup = dispatch_group_create();
dispatch_queue_t queue = //Get whatever queue you want here
dispatch_group_async(taskGroup, queue, ^ {
    [object doSomething];
});
dispatch_group_async(taskGroup, queue, ^ {
    [object doMoreStuff];
});
dispatch_group_async(taskGroup, queue, ^ {
    [object doEvenMoreStuff];
});
dispatch_group_notify(taskGroup, queue, ^{
    [object workDone];
});
dispatch_release(taskGroup);

答案 1 :(得分:2)

通常,这是通过调度组而不是队列完成的。您可以使用dispatch_group_async()将任务分配给组,也可以使用dispatch_group_enter()dispatch_group_leave()手动标记组中的内容。然后,您可以使用dispatch_group_notify()dispatch_group_wait()检查群组中是否有任何内容。