NSOperationQueue和GCD之间的序列化

时间:2013-11-25 21:33:43

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

我现在知道NSOperationQueue使用GCD。我想确认主操作队列和主调度队列是否基本上是相同的队列,即在下面的代码中是否保证块1之前的块的执行顺序:

dispatch_async(background_queue, ^{
    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
        // block 1
    }];        

    dispatch_async(dispatch_get_main_queue(), ^{
        // block 2
    });
});

1 个答案:

答案 0 :(得分:2)

不,不能保证两个块将以任何给定的顺序执行。他们可能是,他们可能不会。这样做将要求NSOperationQueue立即将操作排入基础GCD队列。这将与班级的一般模式背道而驰。

每当您需要执行两个相互序列化的操作时,您需要在代码中显式管理并发。