dispatch_queue_t SerialQueue如何检查是否仍在运行。 ios GCD

时间:2012-10-23 14:48:15

标签: objective-c ios grand-central-dispatch

我需要进行验证,为此我需要知道任务是否仍在运行我使用此代码启动任务

    ` SerialQueue = dispatch_queue_create("miColaEnSerie", NULL);
       dispatch_async(SerialQueue, ^{
    [self loadImageFriend:init finalWhitNumber:final img1WithArray:infoImages1 img2WithArray:infoImages2 img3WithArray:infoImages3];
    });`

1 个答案:

答案 0 :(得分:3)

如果您的SerialQueue中一次只有一个任务,那么您可以将原子属性添加到类:

@property (assign) BOOL isSerialQueueRunning;

然后:

 isSerialQueueRunning = YES;
 dispatch_async(SerialQueue, ^{
    [self loadImageFriend:init finalWhitNumber:final img1WithArray:infoImages1 img2WithArray:infoImages2 img3WithArray:infoImages3];
    isSerialQueueRunning= NO;
 });

但是,如果您向SerialQueue添加了更多任务,则可以将BOOL isSerialQueueRunning更改为NSInteger serialQueueTasks并相应地增加/减少它。然后验证它是否为0,这意味着此时队列中没有任何内容。

有时最好在任务完成时实现通知以获取信息,然后执行某些操作。