2013-11-25 33 views
0

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

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

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

回答

2

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

无论何时您需要执行两个彼此相关的序列化操作,您都需要明确地管理代码中的并发性。