ios 中,10 个线程 同步问题
迷茫
迷茫 2017-04-17 13:16:13
[iOS讨论组]

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

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

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

请大神指正。。。拜谢

迷茫
迷茫

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

全部回复(1)
PHPz

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号