zoukankan      html  css  js  c++  java
  • GCD的6种组合试验

    组合一:同步函数 + 自创串行队列

    - (void)test {
        NSLog(@">>>>>>>>>111");
        dispatch_queue_t queue = dispatch_queue_create("queueName", NULL);
        dispatch_sync(queue, ^{
            NSLog(@">>>>>>>>>666");
            NSLog(@">>>>>>>>>777");
            NSLog(@">>>>>>>>>888");
            NSLog(@">>>>>>>>>999");
        });
        NSLog(@">>>>>>>>>222");
        NSLog(@">>>>>>>>>333");
        NSLog(@">>>>>>>>>444");
        NSLog(@">>>>>>>>>555");
    }

    控制台的打印结果:

    2021-08-09 14:26:53.868117+0800 OCTestLine[26738:2119182] >>>>>>>>>111
    2021-08-09 14:26:53.868240+0800 OCTestLine[26738:2119182] >>>>>>>>>666
    2021-08-09 14:26:53.868283+0800 OCTestLine[26738:2119182] >>>>>>>>>777
    2021-08-09 14:26:53.868315+0800 OCTestLine[26738:2119182] >>>>>>>>>888
    2021-08-09 14:26:53.868344+0800 OCTestLine[26738:2119182] >>>>>>>>>999
    2021-08-09 14:26:53.868455+0800 OCTestLine[26738:2119182] >>>>>>>>>222
    2021-08-09 14:26:53.868490+0800 OCTestLine[26738:2119182] >>>>>>>>>333
    2021-08-09 14:26:53.868509+0800 OCTestLine[26738:2119182] >>>>>>>>>444
    2021-08-09 14:26:53.868526+0800 OCTestLine[26738:2119182] >>>>>>>>>555
    Program ended with exit code: 0

    组合二:同步函数 + 主队列

    - (void)test {
        NSLog(@">>>>>>>>>111");
        dispatch_queue_t queue = dispatch_get_main_queue();
        dispatch_sync(queue, ^{
            NSLog(@">>>>>>>>>666");
            NSLog(@">>>>>>>>>777");
            NSLog(@">>>>>>>>>888");
            NSLog(@">>>>>>>>>999");
        });
        NSLog(@">>>>>>>>>222");
        NSLog(@">>>>>>>>>333");
        NSLog(@">>>>>>>>>444");
        NSLog(@">>>>>>>>>555");
    }

    控制台的打印结果:

    2021-08-09 14:28:03.933092+0800 OCTestLine[26754:2120067] >>>>>>>>>111
    (lldb) 

    组合三:同步函数 + 全局并发队列

    - (void)test {
        NSLog(@">>>>>>>>>111");
        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        dispatch_sync(queue, ^{
            NSLog(@">>>>>>>>>666");
            NSLog(@">>>>>>>>>777");
            NSLog(@">>>>>>>>>888");
            NSLog(@">>>>>>>>>999");
        });
        NSLog(@">>>>>>>>>222");
        NSLog(@">>>>>>>>>333");
        NSLog(@">>>>>>>>>444");
        NSLog(@">>>>>>>>>555");
    }

    控制台的打印结果:

    2021-08-09 14:29:20.474137+0800 OCTestLine[26791:2121857] >>>>>>>>>111
    2021-08-09 14:29:20.474189+0800 OCTestLine[26791:2121857] >>>>>>>>>666
    2021-08-09 14:29:20.474227+0800 OCTestLine[26791:2121857] >>>>>>>>>777
    2021-08-09 14:29:20.474263+0800 OCTestLine[26791:2121857] >>>>>>>>>888
    2021-08-09 14:29:20.474291+0800 OCTestLine[26791:2121857] >>>>>>>>>999
    2021-08-09 14:29:20.474333+0800 OCTestLine[26791:2121857] >>>>>>>>>222
    2021-08-09 14:29:20.474356+0800 OCTestLine[26791:2121857] >>>>>>>>>333
    2021-08-09 14:29:20.474374+0800 OCTestLine[26791:2121857] >>>>>>>>>444
    2021-08-09 14:29:20.474391+0800 OCTestLine[26791:2121857] >>>>>>>>>555
    Program ended with exit code: 0

    组合四:异步函数 + 自创串行队列

    - (void)test {
        NSLog(@">>>>>>>>>111");
        dispatch_queue_t queue = dispatch_queue_create("queueName", NULL);
        dispatch_async(queue, ^{
            NSLog(@">>>>>>>>>666");
            NSLog(@">>>>>>>>>777");
            NSLog(@">>>>>>>>>888");
            NSLog(@">>>>>>>>>999");
        });
        NSLog(@">>>>>>>>>222");
        NSLog(@">>>>>>>>>333");
        NSLog(@">>>>>>>>>444");
        NSLog(@">>>>>>>>>555");
    }

    控制台的打印结果:

    2021-08-09 14:31:50.550148+0800 OCTestLine[26827:2123956] >>>>>>>>>111
    2021-08-09 14:31:50.550465+0800 OCTestLine[26827:2123956] >>>>>>>>>222
    2021-08-09 14:31:50.550483+0800 OCTestLine[26827:2123988] >>>>>>>>>666
    2021-08-09 14:31:50.550511+0800 OCTestLine[26827:2123956] >>>>>>>>>333
    2021-08-09 14:31:50.550521+0800 OCTestLine[26827:2123988] >>>>>>>>>777
    2021-08-09 14:31:50.550539+0800 OCTestLine[26827:2123956] >>>>>>>>>444
    2021-08-09 14:31:50.550548+0800 OCTestLine[26827:2123988] >>>>>>>>>888
    2021-08-09 14:31:50.550568+0800 OCTestLine[26827:2123956] >>>>>>>>>555
    2021-08-09 14:31:50.550572+0800 OCTestLine[26827:2123988] >>>>>>>>>999
    Program ended with exit code: 0

    组合五:异步函数 + 主队列

    - (void)test {
        NSLog(@">>>>>>>>>111");
        dispatch_queue_t queue = dispatch_get_main_queue();
        dispatch_async(queue, ^{
            NSLog(@">>>>>>>>>666");
            NSLog(@">>>>>>>>>777");
            NSLog(@">>>>>>>>>888");
            NSLog(@">>>>>>>>>999");
        });
        NSLog(@">>>>>>>>>222");
        NSLog(@">>>>>>>>>333");
        NSLog(@">>>>>>>>>444");
        NSLog(@">>>>>>>>>555");
    }

    控制台的打印结果:

    2021-08-10 14:24:01.516003+0800 OCTestLine[33821:2971842] >>>>>>>>>111
    2021-08-10 14:24:01.516435+0800 OCTestLine[33821:2971842] >>>>>>>>>222
    2021-08-10 14:24:01.516497+0800 OCTestLine[33821:2971842] >>>>>>>>>333
    2021-08-10 14:24:01.516534+0800 OCTestLine[33821:2971842] >>>>>>>>>444
    2021-08-10 14:24:01.516551+0800 OCTestLine[33821:2971842] >>>>>>>>>555
    2021-08-10 14:24:01.516677+0800 OCTestLine[33821:2971842] >>>>>>>>>666
    2021-08-10 14:24:01.516702+0800 OCTestLine[33821:2971842] >>>>>>>>>777
    2021-08-10 14:24:01.516721+0800 OCTestLine[33821:2971842] >>>>>>>>>888
    2021-08-10 14:24:01.516753+0800 OCTestLine[33821:2971842] >>>>>>>>>999
    Program ended with exit code: 0

    组合六:异步函数 + 全局并发队列

    - (void)test {
        NSLog(@">>>>>>>>>111");
        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        dispatch_async(queue, ^{
            NSLog(@">>>>>>>>>666");
            NSLog(@">>>>>>>>>777");
            NSLog(@">>>>>>>>>888");
            NSLog(@">>>>>>>>>999");
        });
        NSLog(@">>>>>>>>>222");
        NSLog(@">>>>>>>>>333");
        NSLog(@">>>>>>>>>444");
        NSLog(@">>>>>>>>>555");
    }

    控制台的打印结果:

    2021-08-09 14:33:36.189928+0800 OCTestLine[26868:2125874] >>>>>>>>>111
    2021-08-09 14:33:36.190261+0800 OCTestLine[26868:2125898] >>>>>>>>>666
    2021-08-09 14:33:36.190277+0800 OCTestLine[26868:2125874] >>>>>>>>>222
    2021-08-09 14:33:36.190314+0800 OCTestLine[26868:2125898] >>>>>>>>>777
    2021-08-09 14:33:36.190321+0800 OCTestLine[26868:2125874] >>>>>>>>>333
    2021-08-09 14:33:36.190337+0800 OCTestLine[26868:2125898] >>>>>>>>>888
    2021-08-09 14:33:36.190351+0800 OCTestLine[26868:2125874] >>>>>>>>>444
    2021-08-09 14:33:36.190356+0800 OCTestLine[26868:2125898] >>>>>>>>>999
    2021-08-09 14:33:36.190378+0800 OCTestLine[26868:2125874] >>>>>>>>>555
    Program ended with exit code: 0
  • 相关阅读:
    Java中一对多映射关系(转)
    java映射一对一关系 (转)
    如何创建JUnit
    Java数组转置
    get与post方法(吴老师整理)
    后台获得数据
    JDK1.8的安装与卸载
    使用JSP输出九九乘法表
    foreach
    匿名内部类
  • 原文地址:https://www.cnblogs.com/cchHers/p/15118576.html
Copyright © 2011-2022 走看看