美文网首页
多个请求按顺序执行

多个请求按顺序执行

作者: 天蝎座沫沫 | 来源:发表于2018-05-16 11:02 被阅读8次

    1.dispatch_semaphore 信号量方式 https://www.aliyun.com/jiaocheng/362267.html
    dispatch_semaphore_t sem = dispatch_semaphore_create(1);
    dispatch_queue_t queue = dispatch_queue_create("testBlock", NULL);
    dispatch_async(queue, ^{
    dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    NSLog(@"1");
    dispatch_semaphore_signal(sem);
    });
    });
    dispatch_async(queue, ^{
    dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
    NSLog(@"2");
    dispatch_semaphore_signal(sem);
    });
    dispatch_async(queue, ^{
    dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    NSLog(@"3");
    dispatch_semaphore_signal(sem);
    });
    });
    dispatch_async(queue, ^{
    dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
    NSLog(@"4");
    dispatch_semaphore_signal(sem);
    });

    2.gcd调度组 https://www.jianshu.com/p/698f7c89c32e
    // 1. 调度组
    dispatch_group_t group = dispatch_group_create();

    // 2. 队列
    dispatch_queue_t q = dispatch_get_global_queue(0, 0);
    
    // 3. 将任务添加到队列和调度组
    dispatch_group_async(group, q, ^{
        [NSThread sleepForTimeInterval:1.0]; 
        NSLog(@"任务 1 %@", [NSThread currentThread]);
    });
    dispatch_group_async(group, q, ^{
        NSLog(@"任务 2 %@", [NSThread currentThread]);
    });
    dispatch_group_async(group, q, ^{
        NSLog(@"任务 3 %@", [NSThread currentThread]);
    });
    
    // 4. 监听所有任务完成
    dispatch_group_notify(group, q, ^{
        NSLog(@"OVER %@", [NSThread currentThread]);
    });
    

    3.dispatch_barrier_async 栅栏 https://blog.csdn.net/willluckysmile/article/details/61195571

    iOS简单优雅的实现复杂情况下的串行需求https://blog.csdn.net/spicyshrimp/article/details/70845822

    iOS基础知识系列https://blog.csdn.net/spicyShrimp/article/details/62218521

    相关文章

      网友评论

          本文标题:多个请求按顺序执行

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