zoukankan      html  css  js  c++  java
  • GCD简单用法

    /*!
     *  @brief GCD方法
     */
    - (void)GCDMethod
    {
        //后台执行
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            
        });
        
        //主线程执行
        dispatch_async(dispatch_get_main_queue(), ^{
            
        });
        
        //一次性执行
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            
        });
        
        //延迟几秒
        double delayInSeconds = 2.0;
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
        dispatch_after(popTime, dispatch_get_main_queue(), ^{
            //[self CommonMethod1];
        });
        
        //高级用法让后台 2 个线程并行执行,然后等 2 个线程都结束后,再汇总执行结果。这个可以用 dispatch_group, dispatch_group_async 和 dispatch_group_notify 来实现,
        dispatch_group_t group = dispatch_group_create();
        dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
            [self CommonMethod1];
        });
        
        dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
            [self CommonMethod2];
        });
        dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
            [self CommonMethod1];
        });
        
    }
    /*!
     *  @brief 案例测试
     */
    - (void)GCDEmgTest{
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            NSURL *url = [NSURL URLWithString:@"http://www.youdao.com"];
            NSError *error;
            NSString *data = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
            if (data != nil) {
                dispatch_async(dispatch_get_main_queue(), ^{
                    [self CommonMethod1];
                    //NSLog(@"%@",data);
                });
            }
        });
    }
    - (void)CommonMethod1
    {
        static NSInteger i = 1;
        NSLog(@"CommonMethod1第%ld葫芦娃",++i);
    }
    
    
    - (void)CommonMethod2
    {
        static NSInteger i = 2;
        NSLog(@"CommonMethod2第%ld葫芦娃",++i);
    }
    
  • 相关阅读:
    使用promxy实现prometheus 的ha 以及api 聚合
    victoriametrics 快速高效&&可扩展的时序数据库
    statping web 状态监控服务
    prometheus 一些不错的exporter
    fusionauth 通用sso 解决方案学习二 基本试用
    fusionauth 通用sso 解决方案学习一 环境运行
    zeeqs 一个通用的zeebe 数据查询服务
    zeebe 0.23.1 变动说明
    zeebe 0.23.1 发布
    alpine.js 像使用tailwindcss一样编写js
  • 原文地址:https://www.cnblogs.com/superbobo/p/5302123.html
Copyright © 2011-2022 走看看