iOS信号量处理异步请求中的同步处理

 // 创建信号量
    dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
    // 创建全局并行
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_async(group, queue, ^{

        // 请求一
        [loginCode getUserInfoWithNick:nil andUserId:kUserId onSuc:^(id data) {
            NSLog(@"yue");
            dispatch_semaphore_signal(semaphore);

        } andFail:^(NSError *error) {       
        }];

    });
    dispatch_group_async(group, queue, ^{

        // 请求二
        [CommodityViewModel getPriceTransformForIntegral:nil onSuccess:^(id data) {

            NSLog(@"duihuan11");
            dispatch_semaphore_signal(semaphore);

        } onFailure:^(NSError *error) {
        }];
    });
    dispatch_group_async(group, queue, ^{

        // 请求三
        [CommodityViewModel getPriceTransformForIntegral:nil onSuccess:^(id data) {
            NSLog(@"duihuan22");
            dispatch_semaphore_signal(semaphore);

        } onFailure:^(NSError *error) {            
        }];
    });

    dispatch_group_notify(group, queue, ^{

        // 三个请求对应三次信号等待
        dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
        dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
        dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);

        //在这里 进行请求后的方法,回到主线程
        dispatch_async(dispatch_get_main_queue(), ^{

            //更新UI操作

        });
    });

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码农二狗

JobObject实现对进程进行内存和运行时间限制

922
来自专栏CodingBlock

Android查缺补漏(线程篇)-- IntentService的源码浅析

本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8975114.html

552
来自专栏安智客

Meltdown、Spectre攻击---CPU乱序执行和预测执行导致的安全问题

俄亥俄州立大学计算机安全实验室 ? 乱序执行(Out-of-Order Execution) [1] 和预测执行(Speculative Execution) ...

2159
来自专栏ShaoYL

代理和通知

1925
来自专栏刘望舒

Android内容服务ContentService原理浅析

ContentService可以看做Android中一个系统级别的消息中心,可以说搭建了一个系统级的观察者模型,APP可以向消息中心注册观察者,选择订阅自己关心...

1085
来自专栏CodingBlock

Android查缺补漏(线程篇)-- IntentService的源码浅析

1204
来自专栏Android源码框架分析

Android内容服务ContentService原理浅析ContentService启动跟实质注册观察者流程通知流程总结

ContentService可以看做Android中一个系统级别的消息中心,可以说搭建了一个系统级的观察者模型,APP可以向消息中心注册观察者,选择订阅自己关心...

993
来自专栏技术小黑屋

剖析Android中进程与线程调度之nice

在计算机操作系统中,进程是进行资源分配和调度的基本单位,同时每个进程之内也可以存在多个线程。那么在Android系统(Linux Kernel)中,进程是如何去...

664
来自专栏Java开发者杂谈

For update带来的思考

​ 之所以想写这个专题,是因为最近在做一个抢占任务的实现。假设数据库很多个任务,在抢占发生之前任务的状态都是FREE。现在假设同时有一堆抢占线程开始工作,抢占线...

1003
来自专栏北京马哥教育

记一次内存占用问题的调查过程

马哥linux运维 | 最专业的linux培训机构 ---- 最近在维护一台CentOS服务器的时候,发现内存无端"损失"了许多,free和ps统计的结果相差...

3064

扫码关注云+社区