美文网首页
AFNetworking之异步请求并发

AFNetworking之异步请求并发

作者: 过客又见过客 | 来源:发表于2017-08-26 20:57 被阅读712次

    忘了for循环,忘了艰涩难懂的信号量。多了不说上代码,不懂自己脑补。

    @interface ViewController ()
    @property (nonatomic, strong) dispatch_queue_t queue;
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.queue = dispatch_queue_create("com.test.queue", DISPATCH_QUEUE_CONCURRENT);
        dispatch_group_t group = dispatch_group_create();
        dispatch_queue_t groupQueue = dispatch_queue_create(0, 0);
        
        __weak typeof(self) weakSelf = self;
        dispatch_group_async(group, groupQueue, ^{
            dispatch_group_enter(group);
            [weakSelf asynTestFunction2:group];
        });
        
        dispatch_group_async(group, groupQueue, ^{
            dispatch_group_enter(group);
            [weakSelf asynTestFuction1:group];
        });
        dispatch_group_notify(group, groupQueue, ^{
            NSLog(@"测试方法执行完毕");
        });
    }
    
    - (void)asynTestFuction1:(dispatch_group_t)group
    {
        dispatch_async(self.queue, ^{
            for (NSInteger i = 0;i < 10;i++) {
                NSInteger index = i;
            }
            NSLog(@"执行方法一");
            dispatch_group_leave(group);
        });
    }
    
    - (void)asynTestFunction2:(dispatch_group_t)group
    {
        dispatch_async(self.queue, ^{
            for (NSInteger i = 0;i < 10000;i++) {
                NSInteger index = i;
            }
            NSLog(@"执行方法二");
            dispatch_group_leave(group);
        });
    }
    @end
    

    执行结果如下:

    2017-08-26 20:51:30.423169+0800 GCDGroupTest[5009:494839] 执行方法一
    2017-08-26 20:51:30.423171+0800 GCDGroupTest[5009:494837] 执行方法二
    2017-08-26 20:51:30.423378+0800 GCDGroupTest[5009:494839] 测试方法执行完毕
    

    可加群一起交流共同学习:801216530。

    相关文章

      网友评论

          本文标题:AFNetworking之异步请求并发

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