GCD

GCD

Grand Central Dispatch (GCD)是苹果比较提倡的一个多核编程的解决方法

GCD底层也是用线程来实现,指示苹果帮咱们封装了具体操作的方法,这样可以让程序员不用关注实现的细节,值需要关注功能的实现

GCD参数 queue:队列 block:任务

GCD 有两种执行任务的方式 1、同步dispatch_sync(避免在主队列中使用同步执行主线程任务 容易 死锁) 2、异步dispatch_async

同步和异步的区别:

同步:在当前线程中执行

异步:在另一天线程中执行

GCD执行多个任务的队列方式 也有两种:

1、串行队列:让任务一个接着一个地执行(一个任务执行完毕后,在执行下一个任务)

2、并发队列:可以让多个任务并发(同时)执行(自动开启多个线程同时执行任务)并发功能自由在异步函数(dispatch_async)下才有效

串行队列又分为两种:

1、主队列 dispatch_get_main_queue()主队列是GCD自带的一种特殊的串行队列,放在主队列中的任务,都会放到主线程中去执行

2、创建一个队列 dispatch_queue_create

串行队列:按照顺序去执行队列

1、主队列

 dispatch_get_main_queue()  属于串行队列

 dispatch_queue_t  mainQueue =  dispatch_get_main_queue();
   dispatch_async(mainQueue, ^{
     NSLog(@"1111");
   });
    dispatch_async(mainQueue, ^{
       NSLog(@"2222");
   });
   dispatch_async(mainQueue, ^{
       NSLog(@"33333");
    });

是一个队列 执行不同的任务

输出的顺序是1111,2222,33333

2、自己创建队列 串行队列

dispatch_queue_create("", NULL) 串行队列

dispatch_queue_t huLuWa = dispatch_queue_create("葫芦娃", NULL);
   dispatch_sync(huLuWa, ^{
       NSLog(@"1");
   });

    dispatch_sync(huLuWa, ^{
        NSLog(@"2");
    });

    dispatch_sync(huLuWa, ^{
        NSLog(@"3");
    });

并发队列

并发队列 可以指定队列任务的优先级

使用 全局并发队列

//#define DISPATCH_QUEUE_PRIORITY_HIGH 2 // 高
//#define DISPATCH_QUEUE_PRIORITY_DEFAULT 0 // 默认(中)
//#define DISPATCH_QUEUE_PRIORITY_LOW (-2) // 低
//#define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN // 后台
//    GCD默认已经提供了全局的并发队列,供整个应用使用,不需要手动创建

//  long identifier 指定优先级的
  dispatch_queue_t firstQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0);

  dispatch_queue_t twoQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);

  dispatch_queue_t thirdQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
   dispatch_async(firstQueue, ^{
       NSLog(@"1111");
   });

    dispatch_async(twoQueue, ^{
        NSLog(@"2222");
    });

    dispatch_async(thirdQueue, ^{
        NSLog(@"3333");
    });

由于规定了优先级

并发队列代码执行的顺序是按照优先级执行的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值