调度队列和线程和任务顺序

时间:2013-12-06 02:50:31

标签: ios multithreading grand-central-dispatch

伙计们,有点混淆abt调度队列和线程, 可能有几个队列,他们将任务分派给不同的线程, 如果队列是串行的,任务在一行中执行并且可能不同,那不是问题。 但如果我们有2个串行队列,我们​​可以管理它们的顺序吗?

如果我们在这两个队列中放置了一些数据库操作,那么数据可能是错误的?

2 个答案:

答案 0 :(得分:0)

如果这两个队列服务于不同的功能目的,值得拥有单独的队列,那很好,但你可能只是建立了第三个数据库交互队列,这两个队列将分配他们的数据库交互。让第三个队列(专用的低级数据库队列)协调与数据库的所有交互。

如果这两个队列只是两个随机数据库交互队列,那么可能会争论重构代码以将它们合并为一个。

答案 1 :(得分:-1)

是的,您可以管理订单。但不是dispatch_queue。您必须使用NSOperationQueue

NSOperationQueue * queue = [[NSOperationQueue alloc] init];
NSBlockOperation * operation1 = [NSBlockOperation blockOperationWithBlock:^{
        // do something
    }];
[queue addOperation:operation1];

NSBlockOperation * operation2 = [NSBlockOperation blockOperationWithBlock:^{
    // do something
}];

[operation2 addDependency:operation1];
[queue addOperation:operation2];

在此代码中operation2仅在operation1完成时启动。