1

如何釋放我的串行隊列的塊堆棧?我已經把異步執行的一些塊放入隊列中,並且在某些時候我想完全釋放這個隊列爲空。我正在使用低級別dispatch_queue_t。可能嗎?謝謝。空的和完全空閒的串行隊列

+0

你想取消當前正在執行的塊嗎?基本上不能直接通過'dispatch_queue'完成,你需要使用像NSOperationQueue這樣的更高級別的構造,否則你需要在你的調度隊列執行中添加一個快速退出取消。 – gaige 2013-03-19 11:03:52

+0

我不認爲「正在執行塊」是正確的,因爲我們正在談論FIFO隊列。假設我想釋放隊列,目前可能正在執行阻塞操作。我明白,如果當前正在執行的block不能被取消,那麼如果這個block會完成執行,那就沒事了。但是我想取消剩餘的堆棧以供執行。快速退出取消是什麼意思? – user500 2013-03-19 11:16:55

+0

調度隊列中沒有任何取消方法。所以,所有的塊都會執行,並且在某個時間點會變成當前執行的。沒有調度隊列的沖洗機制。 – gaige 2013-03-19 11:29:45

回答

0

你正在使用什麼樣的隊列?

是NSOperationQueue ??

然後-[NSOperationQueue cancelAllOperations]應該做的工作。

+0

抱歉沒有更具體。我正在使用低級別的'dispatch_queue_t'。 – user500 2013-03-19 09:41:29

+0

從其他來源,我得到以下。請閱讀這個。 「NSOperationQueue可以讓你更好地控制你的操作是如何執行的,例如,你可以定義單個操作之間的依賴關係,這對於普通的GCD隊列來說是不可能的,也可以取消已經在NSOperationQueue中入隊的操作只要操作支持它),當你將一個塊排入GCD調度隊列時,它肯定會在某個時候執行。「 – Xcoder 2013-03-19 09:45:06

+0

是的,但我需要串行FIFO隊列和'NSOperationQueue'不起作用。 – user500 2013-03-19 09:53:45