希望在 IOS 线程中,前 9个线程 异步执行,最后一个线程在前 9 个线程执行完毕再执行,请问如何实现? 我现在的思路:
思路1: 将这10 个任务添加到 operationQueue 中,设置并发为 9
思路2: 创建 GCD 并发队列,设置每个线程的优先权 ,前9 个很高,最后一个很低
请大神指正。。。拜谢
业精于勤,荒于嬉;行成于思,毁于随。
GCD 提供了dispatch_group_async和dispatch_group_notify这样的方法来解决你提到的问题。 参看代码:
dispatch_group_async
dispatch_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
GCD 提供了
dispatch_group_async
和dispatch_group_notify
这样的方法来解决你提到的问题。参看代码:
将要异步执行的代码添加到 group 中去,调用 dispatch_group_notify 添加 group 执行完毕后要执行的方法,然后就完成啦〜
印象中 NSOperation 也有类似的东西在里面,你自己找找吧。下面的文章你可以仔细看下,这是一个系列介绍 Cocoa 中的异步,写的很赞
iOS多线程编程Part 3/3 - GCD