我现在知道NSOperationQueue
使用GCD
。我想确认主操作队列和主调度队列是否基本上是相同的队列,即在下面的代码中是否保证块1之前的块的执行顺序:
dispatch_async(background_queue, ^{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
// block 1
}];
dispatch_async(dispatch_get_main_queue(), ^{
// block 2
});
});
答案 0 :(得分:2)
不,不能保证两个块将以任何给定的顺序执行。他们可能是,他们可能不会。这样做将要求NSOperationQueue
立即将操作排入基础GCD队列。这将与班级的一般模式背道而驰。
每当您需要执行两个相互序列化的操作时,您需要在代码中显式管理并发。