比方說,我有一個串行調度隊列和我排隊上了好操作。我已經讀過,我們不能在派遣後取消操作。是否有可能在如果我想派遣另一個我派往也許什麼GCD塊做決定最起碼的看法?檢查排隊的GCD塊?
例子,我派遣操作A到隊列中,但不久後我的應用程序決定排隊其他動作的,所以現在有這些操作的2排隊。
比方說,我有一個串行調度隊列和我排隊上了好操作。我已經讀過,我們不能在派遣後取消操作。是否有可能在如果我想派遣另一個我派往也許什麼GCD塊做決定最起碼的看法?檢查排隊的GCD塊?
例子,我派遣操作A到隊列中,但不久後我的應用程序決定排隊其他動作的,所以現在有這些操作的2排隊。
由於的NSOperation現在建立在GCD的頂部,您現在可以使用addOperationWithBlock:把你的塊上的NSOperationQueue,那麼你可以調用的NSOperationQueue 操作讓未完成的操作的一個NSArray。
的問題,這一點,是這兩個以上的操作,而不是原子,所以這是完全可能的,你的操作將完成在你得到操作陣列,看其是否包含有時間之間。
NSOperations有一個前提條件API,但是,這樣你就可以排隊另一個操作,如果你的第一的NSOperation完成,這將只運行,並以此來保持跟蹤時,你應該嘗試重新入隊的第一的NSOperation 。
正如凱文巴拉德說,你需要詳細說明正是你正在嘗試做的。有一兩件事你可以做的是設置一個標誌,像valid_
,然後你可以做這樣的事情有效地消除所有,但在隊列中的當前項目:
dispatch_async(queue, ^{
if (valid_) {
// perform your task here
}
});
然後,每當你想「取消」的隊列中,只要設置你的valid_
標誌NO
。
再次,雖然,給於你正在嘗試做的更多信息,我可以給你一個更好的答案。
您可以詳細說明您要做什麼嗎?根據您的實際目標,有許多解決方案。 –