ios 中,10 个线程 同步问题

希望在 IOS 线程中,前 9个线程 异步执行,最后一个线程在前 9 个线程执行完毕再执行,请问如何实现?
我现在的思路:

思路1:
将这10 个任务添加到 operationQueue 中,设置并发为 9

思路2:
创建 GCD 并发队列,设置每个线程的优先权 ,前9 个很高,最后一个很低

请大神指正。。。拜谢

阅读 3.9k
1 个回答

GCD 提供了dispatch_group_asyncdispatch_group_notify这样的方法来解决你提到的问题。
参看代码:

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();
for(id obj in array)
    dispatch_group_async(group, queue, ^{
        [self doWorkOnItem:obj];
    });
dispatch_group_notify(group, queue, ^{
    [self doWorkOnArray:array];
});
dispatch_release(group);

将要异步执行的代码添加到 group 中去,调用 dispatch_group_notify 添加 group 执行完毕后要执行的方法,然后就完成啦〜

印象中 NSOperation 也有类似的东西在里面,你自己找找吧。下面的文章你可以仔细看下,这是一个系列介绍 Cocoa 中的异步,写的很赞

iOS多线程编程Part 3/3 - GCD

推荐问题
宣传栏