当前位置:   article > 正文

Swift4.0 使用GCD多线程请求多个网络数据_swift gcd dispatchqueue 请求线程组

swift gcd dispatchqueue 请求线程组

Swift4.0 中,GCD的API更加独立,而不再是像OC一样了,所以我们经常遇到这样一种场景,某个页面需要多个网络请求才可以获得全部数据,在没有顺序要求的情况下,使用GCD Group进行线程调度是最合适的,如果存在顺序要求,需要使用信号量,信号量的具体方法在这里不讨论,下面展示如何使用Group请求多个线程网络数据:

  1. func get(){
  2. let queue = DispatchQueue.init(label: "getCount")//定义队列
  3. let group = DispatchGroup()//创建一个组
  4. //将队列放进组里
  5. queue.async(group: group, execute: {
  6. group.enter()//开始线程1
  7. let url = rootUrl + "/getDetailedQuestion.do"
  8. let parame:[String:AnyObject] = {
  9. return ["questionId":self.id]
  10. }() as [String : AnyObject]
  11. AlaRequestManager.shared.POST(urlString: url, params: parame, success: ({success in
  12. // print(success)
  13. print("thread1")
  14. group.leave()//线程1结束
  15. }))
  16. })
  17. queue.async(group: group, execute: {
  18. group.enter()//开始线程2
  19. let url = rootUrl + "/getDetailedQuestion.do"
  20. let parame:[String:AnyObject] = {
  21. return ["questionId":self.id]
  22. }() as [String : AnyObject]
  23. AlaRequestManager.shared.POST(urlString: url, params: parame, success: ({success in
  24. // print(success)
  25. print("thread2")
  26. group.leave()//线程2结束
  27. }))
  28. })
  29. group.notify(queue: queue){
  30. //队列中线程全部结束
  31. print("end")
  32. }
  33. }



链接:https://www.jianshu.com/p/60a66c38f5d6

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/691559
推荐阅读
相关标签
  

闽ICP备14008679号