ios 中,10 个线程 同步问题
迷茫
迷茫 2017-04-17 13:16:13
0
1
336

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

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

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

请大神指正。。。拜谢

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

membalas semua(1)
PHPzhong

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan