dispatch_group控制多个并发请求
来源:互联网 发布:太阁立志传5 mac 迅雷 编辑:程序博客网 时间:2024/06/06 04:01
场景
在开发过程中会经常出现这样的一个场景,就是需要刷新一个界面数据,而这个界面数据需要发起多个请求才能获得,例如:一个用户信息界面,包括基本数据,关联数据,其他特别数据等,这几种数据存在相互依赖的关系,并且获取每种数据的api不同,需要同时异步发起多个请求。在这种场景下面,就需要有一种线程同步机制来处理。通常多线程同步用得最多的就是信号量。不过,直接使用信号量不但代码上面相对松散,还会存在悬挂等问题。GCD已经提供了dispatch_group来很好的实现同步问题。
实现方式
在上述场景中,使用dispatch_group一般流程如下:
创建一个group:dispatch_group_t group = dispatch_group_create();把一个异步操作加入到group中dispatch_group_enter(group);dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{*dispatch_group_leave(group);});等待group完成所有异步操作dispatch_group_notify(group, dispatch_get_main_queue(), ^{});
说明:
dispatch_group_notify:当group中所有的block操作都完成后才会执行,不会阻塞当前调用线程,如果需要阻塞当前调用线程,可使用dispatch_group_wait(group, DISPATCH_TIME_FOREVER);dispatch_group_enter:增加当前group执行block数dispatch_group_leave:减少当前group执行block数
阅读全文
0 0
- dispatch_group控制多个并发请求
- 多线程并发控制dispatch_group
- dispatch_group实践,AFN3.0多个网络请求
- iOS GCD之dispatch_group的使用(多个文件并发上传)
- 多线程并发流程控制之dispatch_group 有关函数
- 多线程并发流程控制之dispatch_group 有关函数
- ios 多线程控制线程并发数、GCD之dispatch_group、GCD信号量
- dispatch_group
- dispatch_group
- 服务器端接受多个请求时的高并发处理
- 处理多个网络请求的并发的情况
- iOS 多个网络请求并行/并发处理
- iOS 多个网络请求并发执行的解决方案
- iOS 多个网络请求并行/并发处理
- iOS 多个网络请求并行/并发处理
- iOS 多个网络请求并行/并发处理
- JS中如何处理多个ajax并发请求?
- 使用队列控制多个请求访问一个异步方法
- OpenWrt Makefile 整体分析
- Android 之路8---Java基础4
- Android string.xml中的空格以及换行符
- 文字加下划线单选按钮效果,RadioGroup实现
- 14个你可能不知道的JavaScript调试技巧
- dispatch_group控制多个并发请求
- 【Java】 java调用百度地图API根据地理位置中文获取经纬度 地址备忘
- 为什么基类的析构函数为虚函数
- 冒泡排序-C语言
- 财务凭证过账增强 BAPI_ACC_DOCUMENT_POST
- Git------公司常用操作
- 全栈式web开发技术-List
- Leaflet自定义一个Control(L.Control)
- CNN 模型压缩与加速算法综述