美文网首页
iOS 多个网络请求并行/并发处理

iOS 多个网络请求并行/并发处理

作者: 冷煖自知 | 来源:发表于2018-06-08 11:51 被阅读19次
    • 同时存在A,B,C,D四个网络请求,要求同时发起四个网络请求,当四个网络请求都返回数据以后再处理事件E。
    /创建信号量/
                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, ^{
                    NSLog(@"处理事件A");
                    for (int i = 0; i<10000; i++) {
                        NSLog(@"打印i %d",i);
                    }
                    dispatch_semaphore_signal(semaphore);
                });
                dispatch_group_async(group, queue, ^{
                    NSLog(@"处理事件B");
                    for (int i = 0; i<10000; i++) {
                        NSLog(@"打印j %d",i);
                    }
                    dispatch_semaphore_signal(semaphore);
                });
                dispatch_group_async(group, queue, ^{
                    NSLog(@"处理事件C");
                    for (int i = 0; i<10000; i++) {
                        NSLog(@"打印k %d",i);
                    }
                    dispatch_semaphore_signal(semaphore);
                });
                dispatch_group_async(group, queue, ^{
                    NSLog(@"处理事件D");
                    for (int i = 0; i<10000; i++) {
                        NSLog(@"打印l %d",i);
                    }
                    dispatch_semaphore_signal(semaphore);
                });
    
                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_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
                        NSLog(@"处理事件E");
                });
    

    相关文章

      网友评论

          本文标题:iOS 多个网络请求并行/并发处理

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