我在下面的GCD中獲得主隊列,並在我的應用程序中添加來自不同類的不同任務。如何獲取GCD隊列中的任務列表?
dispatch_queue_t queue = dispatch_get_global_queue (
DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
現在我想知道我的多少個任務仍在GCD主隊列中。
有沒有辦法讓GCD隊列中的任務列表?
謝謝
我在下面的GCD中獲得主隊列,並在我的應用程序中添加來自不同類的不同任務。如何獲取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);
很抱歉,我的應用程序無法應用發送組。由於多個類會將多個任務添加到GCD隊列中。調度組似乎只適用於一個類的單個實例。我的情況是,我想監視全球級中央池中多個班級的任務。 – user403015 2012-03-13 03:09:37
不應該在dispatch_group_notify塊內使用dispatch_group_release,而不是在它下面使用dispatch_release? – droussel 2012-04-03 15:04:05
該隊列將保留該組,因此在完成添加之後可以安全地釋放它(或者我犯了一個可怕的錯誤,並且應用程序不會運行^^;) – borrrden 2012-04-03 15:09:01
通常,這是通過調度組而不是隊列完成的。您可以使用dispatch_group_async()
將任務分配給組,也可以使用dispatch_group_enter()
和dispatch_group_leave()
手動標記組中的內容。然後,您可以使用dispatch_group_notify()
或dispatch_group_wait()
檢查組中是否有任何內容。
對不起,派遣組無法應用於我的應用程序由於多個類會將多個任務添加到GCD隊列中。調度組似乎只適用於一個類的單個實例。我的情況是,我想監視全球級中央池中多個班級的任務。 – user403015 2012-03-13 03:09:49
組在發送時添加。它與課程無關。你使用'NSOperations'而不是直接調用'dispatch_'方法嗎?如果你使用'dispatch_'方法,那麼你可以在那個時候應用一個組。 – 2012-03-13 03:27:04
我的情況:A類,B類和C類會在自己的實例中向GCD添加任務。我如何爲不同的類創建一個通用調度組?我可以將創建的組傳遞給不同的類嗎?謝謝。 – user403015 2012-03-13 03:33:36
GCD標籤保留爲「最大公約數」 - 更改標籤以糾正一個。 – paxdiablo 2012-03-13 03:02:27