如果我有一個dispatch_group
類屬性:dispatch_group_notify塊是否對dispatch_group_t的生命週期持續存在?
@property (nonatomic, readonly) dispatch_group_t _serialGroup;
,我有一個塊,我總是希望每當組完成名爲:
dispatch_group_notify(self._serialGroup, self._serialQueue, ^{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//...do some stuff...
});
});
可我只是在的動初始化定義dispatch_group_notify
dispatch_group
曾經一次,每當該組完成時它會被調用,或者每次向組添加項目時是否需要重新定義它?
Dang,這裏的用例是我想在隊列爲空時調用一個'block()',但是我不斷向隊列中添加項目,所以我如何確保將'block()'添加到w /多次添加它? – Shizam 2013-05-11 22:24:34
我想不出一種簡單而廉價的方式來使用當前的組API(但它將是一個值得提升的文件請求...)。你最簡單的高效選項可能是用你自己的'dispatch_async()'包裝器來調用'dispatch_group_async()',它通過'OSAtomicIncrement()'/'OSAtomicDecrement()'維護一個原子計數器並觸發'dispatch_async()你的通知塊在1-> 0轉換(即當遞減返回0時)。 – das 2013-05-11 23:04:15