GCD中常用函数及释义

GCD 中的常用函数一. 什么是GCDGrand Central Dispatch 简称(GCD)是苹果公司开发的异步执行技术之一,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统。这建立在任务并行执行的线程池模式的基础上的
摘要由CSDN通过智能技术生成


GCD 中的常用函数

一. 什么是GCD

Grand Central Dispatch 简称(GCD)是苹果公司开发的异步执行技术之一,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统。这建立在任务并行执行的线程池模式的基础上的。

二. 常用函数的整理

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
#pragma mark - 导入GCD之前的简单多线程技术
    /*
     *  NSObject performSelectorInBackground: withObject: 方法
     *  执行后台线程
     */
    [self performSelectorInBackground:@selector(doSomething) withObject:nil];
    
#pragma mark - GCD技术多线程的一般方法
    
    dispatch_queue_t queue = dispatch_queue_create("XXXX", NULL);
    /*
     *  异步执行 dispatch_async
     *  同步执行 dispatch_sync
     */
    dispatch_async(queue, ^{
        
        /*
         *  需要长时间处理的任务
         *  例如AR画像识别
         *  例如数据库访问
         *  TODO:---------
         */
        
        /*
         *  长时间处理结束,主线程使用其处理结果
         */
        
        dispatch_async(dispatch_get_main_queue(), ^{
            
        /*
         *  只在主线程可以的处理
         *  例如用户界面更新
         */
            
        });
    });
#pragma mark - GCD队列获得方法
//    第一种方法
//    开发者要做的只是定义想执行的任务并追加到合适的Dispatch Queue
    dispatch_async(queue, ^{
        /*
         *  想执行的任务
         */
        
    });
//   生成Serial Dispatch Queue 的方法(串行队列)
    
    dispatch_queue_t serialQueue = dispatch_queue_create("XXXXX", NULL);
    
//   生成Concurrent Dispatch Queue 的方法 (并行队列)
    dispatch_queue_t conCurrentQueue = dispatch_queue_create("com.ideal.gcd", DISPATCH_QUEUE_CONCURRENT);
    
    
//   启动创建的队列
    dispatch_async(serialQueue, ^{
        /*
         *  想执行的任务
         */
    });
    
    dispatch_async(conCurrentQueue, ^{
        /*
         *  想执行的任务
         */
    });
    /*
     * 在非ARC的情况下,需要释放创建的队列。
    dispatch_release(queue);
    dispatch_release(serialQueue);
    dispatch_release(conCurrentQueue);
    */
    
//    第二种方法
//    获得系统提供的标准 Dispatch Queue
    /*
     Main Dispatch Queue :
     主线程只有一个,因此Main Dispatch Queue 是Serial Dispatch Queue。
     Global Dispatch Queue :
     全局队列,是所有应用程序都能使用的Concurrent Dispatch Queue,因此没必要生成并行队列,只需获取系统的就可以了。
     */
//    系统提供Dispatch Queue 的获取方法
//    Main Dispatch Queue :
    dispatch_queue_t mainDispatchQueue = dispatch_get_main_queue();
    
//    Global Dispatch Queue :
//    最高优先级:
    dispatch_queue_t globalQueueHigh = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
    
//    默认优先级:
    dispatch_queue_t globalQueueDefault = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    
//    低优先级:
    dispatch_queue_t globalQueueLow = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0);
    
//    后台优先级:
    dispatch_queue_t globalQueueBackground = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
//   启动创建的队列
    dispatch_async(mainDispatchQueue, ^{
        /*
         *  只能在主线程执行的任务
         */
    });
    dispatch_async(globalQueueHigh, ^{
        /*
         *  可并行执行的任务
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值