GCD之Apple推崇的多线程管理策略

来源:互联网 发布:数据变换方法的选择 编辑:程序博客网 时间:2024/04/28 18:18
//GCD:Grand Central Dispatch,大中央调度,是Apple推崇的多线程管理策略,是通过队列 对多线程进行管理
    //第一种队列
    //主调队列,在主线程中执行,并且是串行(一次操作一个)
    dispatch_queue_t mainQueue = dispatch_get_main_queue();
    //第二种队列
    //全局队列,在子线程中执行,并且是并行(一次执行多个)
    //参数1:设置队列的优先级(high,default,low,background)
    //参数2:预留参数,未来使用
    dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    //第三种队列
    //自定义队列,在子线程中执行,可以设置并行或串行
    //参数1:区分队列的唯一标识,是一个可选项,如果不写就写NULL.如果写的话就必须规范的例子:"com.example.myqueue"
    //参数2:是设置并行 DISPATCH_QUEUE_CONCURRENT 或串行的DISPATCH_QUEUE_SERIAL(NULL)
    dispatch_queue_t customQueue = dispatch_queue_create("com.example.myqueue", NULL);
    NSLog(@"%@%@%@",mainQueue,globalQueue,customQueue);
    
    //同步执行sync(需要等待执行完毕);
    //参数1:指定队列
    //参数2:Block,执行的操作
//    dispatch_sync(globalQueue, ^{
//        [self banZhuanPlus];
//    });
    //异步执行async(不需要等待执行完毕)
    dispatch_async(globalQueue, ^{
        [self banZhuanPlus];
    });
    
    //延迟执行
//    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//        <#code to be executed after a specified delay#>
//    });

    //单例Pen.h文件

(可以整片直接复制使用)

1 0