zoukankan      html  css  js  c++  java
  • GCD使用二(队列使用)

    GCD2-- 队列使用

    asunc异步并发:
    // 获得全局的并发队列
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    // 将 任务 添加 全局队列 中去 异步 执行
    dispatch_async(queue, ^{
    NSLog(@"-----下载图片1---%@", [NSThread currentThread]);
    });
    dispatch_async(queue, ^{
    NSLog(@"-----下载图片2---%@", [NSThread currentThread]);
    });

    async异步串行:
    // 1.创建一个串行队列
    dispatch_queue_t queue = dispatch_queue_create("cn.heima.queue", NULL);

    // 2.将任务添加到串行队列中 异步 执行
    dispatch_async(queue, ^{
    NSLog(@"-----下载图片1---%@", [NSThread currentThread]);
    });
    dispatch_async(queue, ^{
    NSLog(@"-----下载图片2---%@", [NSThread currentThread]);
    });


    GCD中获取串行队列2途径:
    1.用dispatch_queue_creat函数创建串行队列
    dispatch_queue_t
    dispatch_queue_creat(const char *label, dispatch_queue_attr_t attr); //队列名称,属性(一般用NULL)
    dispatch_queue_t queue = dispatch_queue_create("cn.itcast.queue", NULL);// 创建
    dispatch_release(queue);//非ARC释放手动创建的队列

    2.用主队列
    GCD自带的一特殊串行队列
    放在主队列的任务,都自动到主线程执行
    使用dispatch_get_main_queue()获取主队列
    dispatch_queue_t queue = dispatch_get_main_queue();


    async异步
    全局并发队列:
    开启新线程,并发执行任务
    手动创建串行队列:
    开启新线程,串行执行队列
    主队列:
    不开启新线程,串行执行任务


    内存管理方面:
    //Fonndation:OC
    //Core Foundation:C
    NSString *str = @"123";
    CFStringRef str2 = (_bridge CFStringRef)str;
    NSString *str3 = (_bridge NSString *)str2;

    CFArrayRe array = CFArrayCreate(NULL, NULL, 10,NULL);
    CFRelease(array);

    CGPathRef path = CGPathCreateMutable();
    CGPathRelease(path);

    /**
    函数名带有creatcopy ew etain等字眼,在不用时需要release
    GCD数据类型在ARC下不需要release
    CF(Core Foundation)的数据类型在ARC下还需要release
    */

  • 相关阅读:
    poj2263
    poj2304
    低调是态度,也是智慧
    股票操作記錄2
    治病記錄(2013年)
    过年了
    治病記錄
    近段時間學習記錄
    新的一年
    關于設計
  • 原文地址:https://www.cnblogs.com/fangchun/p/4688591.html
Copyright © 2011-2022 走看看