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);
    }
    
  • 相关阅读:
    linux下 C++ 读取mat文件 MATLAB extern cyphon scipy 未完待续
    mshadow笔记
    mem_fun 例子
    gedit embeded terminal 设置字体 颜色
    decltype typename
    gcc4.9.1新特性
    C++开发者都应该使用的10个C++11特性 转
    如何加快C++代码的编译速度 转 ccache
    cout关闭输出缓冲,调试用
    boost range zhuan
  • 原文地址:https://www.cnblogs.com/superbobo/p/5302123.html
Copyright © 2011-2022 走看看