2018-05-25

记录一下GCD网络请求的并发

 // 创建信号量
 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操作

    });


});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,795评论 8 265
  • 今天工作主要是起项目,打开网站曝出请求过多的问题,由于后台没有抛任何异常,所以首先想到的是nginx的问题,又重新...
    菜凯阅读 2,299评论 0 1
  • 或许爱情从来都是这样,开始的轰轰烈烈,结束的无声无息……
    安妮sunshine阅读 1,046评论 0 0
  • 夜 似黑色的雨幕 站在高处 风雨剪不断心里的踌躇 心已经迷了路 我想我爱你的 偶尔忘记哭泣了 追随这那一个 梦 走...
    空瓶小宅阅读 1,547评论 1 6
  • 今天下午去单位有点早,待我爬上大院五楼时,那个小女孩已在楼层站着,一定是没带钥匙进不了办公室门。我邀请她到我们办公...
    荷叶的荷阅读 1,040评论 0 0