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

Iphone 如何获取GCD队列中的任务列表?,iphone,ios,ipad,grand-central-dispatch,Iphone,Ios,Ipad,Grand Central Dispatch,我在GCD中获得如下主队列,并在我的应用程序中添加来自不同类的不同任务 dispatch_queue_t queue = dispatch_get_global_queue ( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 现在我想知道还有多少任务仍在GCD主队列中 是否有任何方法可以获取GCD队列中的任务列表 谢谢这真的不是GCD的范例。例如,如果您想跟踪某一组操作,您可以创建一个调度组,并在完成时注册以获得通知,如本例所示 dispatch_group_

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

dispatch_queue_t queue = dispatch_get_global_queue (
    DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
现在我想知道还有多少任务仍在GCD主队列中

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


谢谢

这真的不是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);

通常,这是通过调度组而不是队列来完成的。您可以使用
dispatch\u group\u async()。然后,您可以使用
dispatch\u group\u notify()
dispatch\u group\u wait()

为“最大公约数”保留GCD标记-将标记更改为正确标记。很抱歉,无法在我的应用程序中应用dispatch group。因为多个类会将多个任务添加到GCD队列中。调度组似乎只应用于类的单个实例。我的情况是,我想在全局级别监控中央池中多个类的任务。您不应该在dispatch\u group\u notify块中使用dispatch\u group\u release,而不是在其下使用dispatch\u release吗?队列将保留该组,因此在向其添加内容后可以安全地释放(或者我犯了一个可怕的错误,应用程序无法运行^^;)很抱歉,无法在我的应用程序中应用调度组。因为多个类会将多个任务添加到GCD队列。调度组似乎只应用于一个类的单个实例。我的情况是,我希望在全局级别的中央池中监视多个类中的任务。组是在调度点添加的。它没有任何作用g与类有关。您是否使用
NSOperations
而不是直接调用
dispatch
方法?如果您使用
dispatch
方法,那么您可以在该点应用一个组。我的情况是:类a、类B和类C将在各自的实例中向GCD添加任务。我如何创建一个通用的调度组r不同的类?我可以将创建的组传递到不同的类吗?谢谢。是的。它只是一个分派组。这是一种类型,可以作为参数传递,分配给变量或IVAR。您需要使用分派保留和分派释放来保留和释放它。