为少数代表创建队列

时间:2014-09-11 08:31:02

标签: objective-c

我有几个应该返回委托响应的调用。呼叫可以并行进行。我必须在所有呼叫完成后启动程序。

我正在考虑正确的方法,我的主要想法是设置一个整数,当一个委托完成时,该整数递增,当它等于X时,我就开始了。

问题是,如果递增是原子的,还是必须同步。

    -(void)serverDelegate1:(NSMutableArray*)images
    integer++;
//check

    -(void)serverDelegate2:(NSMutableArray*)images
    integer++;
//check

    -(void)serverDelegate3:(NSMutableArray*)images
    integer++;
//check

并设置超时,所以一段时间后它就会启动。

这可能是一种完全错误的方式,所以请原谅我。

1 个答案:

答案 0 :(得分:1)

您是否考虑过使用并发队列?就像在这个例子中一样:

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();

// Add a task to the group
dispatch_group_async(group, queue, ^{
   // Some asynchronous work
});

// Do some other work while the tasks execute.

// When you cannot make any more forward progress,
// wait on the group to block the current thread.
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);

// Release the group when it is no longer needed.
dispatch_release(group);

您可以在委托中创建队列,并等待完成这三项任务吗?

可以在Apple文档中找到更多信息:https://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html