我在GCD中获得主队列如下所示,我在我的应用程序中添加了来自不同类的不同任务。
dispatch_queue_t queue = dispatch_get_global_queue (
DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
现在我想知道仍有多少任务仍在GCD主队列中。
是否有任何方法可以在GCD队列中获取任务列表?
由于
答案 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()
检查群组中是否有任何内容。