iOS中的多线程如何按设定顺序去执行任务详解
2019/7/9 22:47:46
本文主要是介绍iOS中的多线程如何按设定顺序去执行任务详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
多线程概述
对于ios系统中的某个App来讲,是单进程多线程方式来工作。一般来说,使用多线程的好处是可以把程序分成相对独立的几个模块,可以有效的防止某个模块堵塞的时候导致整个程序卡死;还有就是提高运行效率,现在CPU都是多核,多个核可以同时跑,可以同时执行多条线程。
经常有这样的需求:
1,有m个网络请求。
2,先并发执行其中n几个。
3,待这n个请求完成之后再执行第n+1个请求。
4然后等 第n+1个请求完成后再并发执行剩下的m-(n+1)个请求。
如果我们用GCD,可以使用dispatcg_barrier_async 来实现,如下:
注意这里的queue 不能是 global_queue
注意:看图片中注释的哪一行代码,dispatch_global 跟 dispatch_barrier 结合起来是起不到barrier 的作用的,查阅dispatch_barrier的开发者文档我们发现如下一段描述:
意思是我们传入的queue 需要时使用dispatch_queue_create创建出来的,如果我们传的queue是 串行或 global,那这个方法的行为就跟 dispatch_sync差不多了,如果你对 dispatch_sync(同步执行) 不甚了解,没关系,你只需要知道,barrier 执行的不再是我们预想的顺序了,dispatch_sync 的一个特点是,放进去任务就开始执行。
如果我们用NSOpeartion,可以使用addDenpency 来实现,如下:
可以看到这种方法虽然实现了设定顺序,但是并不优雅。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对找一找教程网的支持。
这篇关于iOS中的多线程如何按设定顺序去执行任务详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12Axios库资料:新手入门必读教程
- 2024-11-11Axios库项目实战:新手入门教程
- 2024-09-29Axios库教程:初学者必备指南
- 2024-08-29Axios库资料:新手入门指南与基本使用教程
- 2024-03-14system bios shadowed
- 2024-03-14gabios
- 2024-02-07iOS应用提交上架的最新流程
- 2024-02-06打包 iOS 的 IPA 文件
- 2023-12-07uniapp打包iOS应用并通过审核:代码混淆的终极解决方案 ?
- 2023-11-25uniapp IOS从打包到上架流程(详细简单) 原创