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

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

    - (void)test {
        NSLog(@">>>>>>>>>111");
        dispatch_queue_t global_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        dispatch_async(global_queue, ^{
            NSLog(@">>>>>>>>>666");
            dispatch_queue_t queue = dispatch_queue_create("queueName", NULL);
            dispatch_sync(queue, ^{
                NSLog(@">>>>>>>>>aaa");
                NSLog(@">>>>>>>>>bbb");
                NSLog(@">>>>>>>>>ccc");
                NSLog(@">>>>>>>>>ddd");
            });
            NSLog(@">>>>>>>>>777");
            NSLog(@">>>>>>>>>888");
            NSLog(@">>>>>>>>>999");
        });
        NSLog(@">>>>>>>>>222");
        NSLog(@">>>>>>>>>333");
        NSLog(@">>>>>>>>>444");
        NSLog(@">>>>>>>>>555");
    }

    控制台的打印结果:

    2021-08-10 14:32:37.906201+0800 OCTestLine[33934:2977686] >>>>>>>>>111
    2021-08-10 14:32:37.906546+0800 OCTestLine[33934:2977686] >>>>>>>>>222
    2021-08-10 14:32:37.906530+0800 OCTestLine[33934:2978055] >>>>>>>>>666
    2021-08-10 14:32:37.906582+0800 OCTestLine[33934:2977686] >>>>>>>>>333
    2021-08-10 14:32:37.906614+0800 OCTestLine[33934:2977686] >>>>>>>>>444
    2021-08-10 14:32:37.906617+0800 OCTestLine[33934:2978055] >>>>>>>>>aaa
    2021-08-10 14:32:37.906644+0800 OCTestLine[33934:2977686] >>>>>>>>>555
    2021-08-10 14:32:37.906650+0800 OCTestLine[33934:2978055] >>>>>>>>>bbb
    2021-08-10 14:32:37.906679+0800 OCTestLine[33934:2978055] >>>>>>>>>ccc
    2021-08-10 14:32:37.906707+0800 OCTestLine[33934:2978055] >>>>>>>>>ddd
    2021-08-10 14:32:37.906751+0800 OCTestLine[33934:2978055] >>>>>>>>>777
    2021-08-10 14:32:37.906779+0800 OCTestLine[33934:2978055] >>>>>>>>>888
    2021-08-10 14:32:37.906830+0800 OCTestLine[33934:2978055] >>>>>>>>>999

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

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

    控制台的打印结果:

    2021-08-10 14:37:04.496324+0800 OCTestLine[34029:2981683] >>>>>>>>>111
    2021-08-10 14:37:04.496658+0800 OCTestLine[34029:2981683] >>>>>>>>>222
    2021-08-10 14:37:04.496627+0800 OCTestLine[34029:2982079] >>>>>>>>>666
    2021-08-10 14:37:04.496694+0800 OCTestLine[34029:2981683] >>>>>>>>>333
    2021-08-10 14:37:04.496722+0800 OCTestLine[34029:2981683] >>>>>>>>>444
    2021-08-10 14:37:04.496742+0800 OCTestLine[34029:2981683] >>>>>>>>>555
    2021-08-10 14:37:04.496845+0800 OCTestLine[34029:2981683] >>>>>>>>>aaa
    2021-08-10 14:37:04.496870+0800 OCTestLine[34029:2981683] >>>>>>>>>bbb
    2021-08-10 14:37:04.496888+0800 OCTestLine[34029:2981683] >>>>>>>>>ccc
    2021-08-10 14:37:04.496905+0800 OCTestLine[34029:2981683] >>>>>>>>>ddd
    2021-08-10 14:37:04.496941+0800 OCTestLine[34029:2982079] >>>>>>>>>777
    Program ended with exit code: 0

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

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

    控制台的打印结果:

    2021-08-10 14:37:38.862942+0800 OCTestLine[34045:2982414] >>>>>>>>>111
    2021-08-10 14:37:38.863252+0800 OCTestLine[34045:2982414] >>>>>>>>>222
    2021-08-10 14:37:38.863234+0800 OCTestLine[34045:2982804] >>>>>>>>>666
    2021-08-10 14:37:38.863283+0800 OCTestLine[34045:2982414] >>>>>>>>>333
    2021-08-10 14:37:38.863304+0800 OCTestLine[34045:2982414] >>>>>>>>>444
    2021-08-10 14:37:38.863322+0800 OCTestLine[34045:2982414] >>>>>>>>>555
    2021-08-10 14:37:38.863324+0800 OCTestLine[34045:2982804] >>>>>>>>>aaa
    2021-08-10 14:37:38.863357+0800 OCTestLine[34045:2982804] >>>>>>>>>bbb
    2021-08-10 14:37:38.863384+0800 OCTestLine[34045:2982804] >>>>>>>>>ccc
    2021-08-10 14:37:38.863408+0800 OCTestLine[34045:2982804] >>>>>>>>>ddd
    2021-08-10 14:37:38.863453+0800 OCTestLine[34045:2982804] >>>>>>>>>777
    2021-08-10 14:37:38.863536+0800 OCTestLine[34045:2982804] >>>>>>>>>888
    2021-08-10 14:37:38.863596+0800 OCTestLine[34045:2982804] >>>>>>>>>999

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

    - (void)test {
        NSLog(@">>>>>>>>>111");
        dispatch_queue_t global_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        dispatch_async(global_queue, ^{
            NSLog(@">>>>>>>>>666");
            dispatch_queue_t queue = dispatch_queue_create("queueName", NULL);
            dispatch_async(queue, ^{
                NSLog(@">>>>>>>>>aaa");
                NSLog(@">>>>>>>>>bbb");
                NSLog(@">>>>>>>>>ccc");
                NSLog(@">>>>>>>>>ddd");
            });
            NSLog(@">>>>>>>>>777");
            NSLog(@">>>>>>>>>888");
            NSLog(@">>>>>>>>>999");
        });
        NSLog(@">>>>>>>>>222");
        NSLog(@">>>>>>>>>333");
        NSLog(@">>>>>>>>>444");
        NSLog(@">>>>>>>>>555");
    }

    控制台的打印结果:

    2021-08-10 14:38:18.512990+0800 OCTestLine[34061:2983212] >>>>>>>>>111
    2021-08-10 14:38:18.513322+0800 OCTestLine[34061:2983212] >>>>>>>>>222
    2021-08-10 14:38:18.513306+0800 OCTestLine[34061:2983598] >>>>>>>>>666
    2021-08-10 14:38:18.513367+0800 OCTestLine[34061:2983212] >>>>>>>>>333
    2021-08-10 14:38:18.513399+0800 OCTestLine[34061:2983212] >>>>>>>>>444
    2021-08-10 14:38:18.513421+0800 OCTestLine[34061:2983598] >>>>>>>>>777
    2021-08-10 14:38:18.513427+0800 OCTestLine[34061:2983212] >>>>>>>>>555
    2021-08-10 14:38:18.513460+0800 OCTestLine[34061:2983598] >>>>>>>>>888
    2021-08-10 14:38:18.513477+0800 OCTestLine[34061:2983599] >>>>>>>>>aaa
    2021-08-10 14:38:18.513491+0800 OCTestLine[34061:2983598] >>>>>>>>>999
    2021-08-10 14:38:18.513518+0800 OCTestLine[34061:2983599] >>>>>>>>>bbb
    2021-08-10 14:38:18.513564+0800 OCTestLine[34061:2983599] >>>>>>>>>ccc
    2021-08-10 14:38:18.513625+0800 OCTestLine[34061:2983599] >>>>>>>>>ddd

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

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

    控制台的打印结果:

    2021-08-10 14:39:24.050567+0800 OCTestLine[34078:2984134] >>>>>>>>>111
    2021-08-10 14:39:24.050868+0800 OCTestLine[34078:2984134] >>>>>>>>>222
    2021-08-10 14:39:24.050866+0800 OCTestLine[34078:2984512] >>>>>>>>>666
    2021-08-10 14:39:24.050904+0800 OCTestLine[34078:2984134] >>>>>>>>>333
    2021-08-10 14:39:24.050936+0800 OCTestLine[34078:2984134] >>>>>>>>>444
    2021-08-10 14:39:24.050943+0800 OCTestLine[34078:2984512] >>>>>>>>>777
    2021-08-10 14:39:24.050965+0800 OCTestLine[34078:2984134] >>>>>>>>>555
    2021-08-10 14:39:24.050979+0800 OCTestLine[34078:2984512] >>>>>>>>>888
    2021-08-10 14:39:24.051007+0800 OCTestLine[34078:2984512] >>>>>>>>>999
    2021-08-10 14:39:24.051107+0800 OCTestLine[34078:2984134] >>>>>>>>>aaa
    2021-08-10 14:39:24.051135+0800 OCTestLine[34078:2984134] >>>>>>>>>bbb
    2021-08-10 14:39:24.051154+0800 OCTestLine[34078:2984134] >>>>>>>>>ccc
    2021-08-10 14:39:24.051179+0800 OCTestLine[34078:2984134] >>>>>>>>>ddd
    Program ended with exit code: 0

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

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

    控制台的打印结果:

    2021-08-10 14:40:04.387136+0800 OCTestLine[34091:2984975] >>>>>>>>>111
    2021-08-10 14:40:04.387443+0800 OCTestLine[34091:2984975] >>>>>>>>>222
    2021-08-10 14:40:04.387428+0800 OCTestLine[34091:2985374] >>>>>>>>>666
    2021-08-10 14:40:04.387481+0800 OCTestLine[34091:2984975] >>>>>>>>>333
    2021-08-10 14:40:04.387512+0800 OCTestLine[34091:2984975] >>>>>>>>>444
    2021-08-10 14:40:04.387526+0800 OCTestLine[34091:2985374] >>>>>>>>>777
    2021-08-10 14:40:04.387538+0800 OCTestLine[34091:2984975] >>>>>>>>>555
    2021-08-10 14:40:04.387557+0800 OCTestLine[34091:2985375] >>>>>>>>>aaa
    2021-08-10 14:40:04.387563+0800 OCTestLine[34091:2985374] >>>>>>>>>888
    2021-08-10 14:40:04.387597+0800 OCTestLine[34091:2985374] >>>>>>>>>999
    2021-08-10 14:40:04.387610+0800 OCTestLine[34091:2985375] >>>>>>>>>bbb
    2021-08-10 14:40:04.387691+0800 OCTestLine[34091:2985375] >>>>>>>>>ccc
    2021-08-10 14:40:04.387738+0800 OCTestLine[34091:2985375] >>>>>>>>>ddd
  • 相关阅读:
    Android Xmpp协议讲解
    IOS 教程以及基础知识
    android的快速开发框架集合
    Android项目快速开发框架探索(Mysql + OrmLite + Hessian + Sqlite)
    afinal logoAndroid的快速开发框架 afinal
    Android 快速开发框架:ThinkAndroid
    2020.12.19,函数式接口,函数式编程,常用函数式接口,Stream流
    2020.12.18 网络编程基础,网络编程三要素,TCP通信,Socket类,ServerSocket
    2020.12.16,Properties,Buffer,InputStreamReader
    2020.12.15 IO流,字节流,字符流,流异常处理
  • 原文地址:https://www.cnblogs.com/cchHers/p/15118975.html
Copyright © 2011-2022 走看看