美文网首页iOS多线程开发
iOS信号量-处理异步请求中的同步处理

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

作者: a1a4b0d9e20c | 来源:发表于2020-05-25 15:59 被阅读0次

// 创建信号量--执行3个异步网络请求

    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操作

        });
    });

相关文章

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

    2018/05/27上方dispatch_semaphore和dispatch_group其实是重复了的。使用di...

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

    // 创建信号量--执行3个异步网络请求

  • 异步

    异步 异步请求 同步请求:同一个请求由一个线程从头到尾进行处理 一步到位 异步请求:同一个请求中由多个线程进行处理...

  • OkHttp源码解析 -- 同步异步处理

    前言: 使用OkHttp,执行网络请求时会有异步还是同步处理。先说下异步和同步的区别,同步并不是指在UI线程中执行...

  • 前端面试题:同步和异步的区别?

    理解a: 举个例子:普通B/S模式(同步)AJAX技术(异步) 同步:提交请求 >> 等待服务器处理 >> 处理完...

  • 同步或异步异常处理

    同步或异步异常处理 同步读取异常处理 异步读取文件异常处理

  • BIO,NIO,AIO

    同步、异步、阻塞、非阻塞 同步与异步 同步: 同步就是发起一个调用后,被调用者未处理完请求之前,调用不返回。 异步...

  • Reactor模式理解(二)

    Java I/O模型 同步 vs. 异步 同步I/O每个请求必须逐个地被处理,一个请求的处理会导致整个流程的暂时等...

  • 分布式之异步处理

    同步和异步处理 处理一般可以分为同步和异步两种。同步的处理就像我们生活中打电话,打电话的双方都需要做即时的响应处理...

  • 异步Servlet 特性

    异步Servlet 本篇主要讲解 如何使用 异步Servlet的处理请求,并且演示 同步Servlet和异步Ser...

网友评论

    本文标题:iOS信号量-处理异步请求中的同步处理

    本文链接:https://www.haomeiwen.com/subject/qciyahtx.html