0
有什么方法可以知道队列被暂停,我可以恢复它,反之亦然?因为否则应用程序崩溃。或者我需要将这些信息存储在一些变量中并检查?如何确定dispatch_queue_t在iOS中是否被暂停?
有什么方法可以知道队列被暂停,我可以恢复它,反之亦然?因为否则应用程序崩溃。或者我需要将这些信息存储在一些变量中并检查?如何确定dispatch_queue_t在iOS中是否被暂停?
BOOL dispatch_queue_is_empty(dispatch_queue_t queue)
{
dispatch_group_t group = dispatch_group_create();
dispatch_group_enter(group);
dispatch_async(queue, ^{
dispatch_group_leave(group);
});
int64_t maxWaitTime = 0.00000005 * NSEC_PER_SEC;
BOOL isReady = dispatch_group_wait(group, maxWaitTime) == 0;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
dispatch_release(group);
});
return isReady;
}
为了测试
dispatch_queue_t queue = dispatch_queue_create("test", 0);
NSLog(@"Is empty %@", dispatch_queue_is_empty(queue) ? @"YES" : @"NO");
dispatch_async(queue, ^{
for(int i = 0; i < 100; i++)
{
NSLog(@"... %i", i);
}
});
NSLog(@"Is empty %@", dispatch_queue_is_empty(queue) ? @"YES" : @"NO");
你想出如何做到这一点? – SpaceDog 2011-01-31 20:51:52
我只是有一个布尔变量来存储队列的状态。 – tadasz 2011-02-08 01:29:03
我正在考虑这个,以及我认为我会设置一个布尔队列暂停状态。我希望我有更多的选择,比如让队列在恢复之前等待x毫秒。 – Brennan 2011-07-18 17:24:06