GCD

GCD的“艺术”可归结为选择正确的队列调度函数来提交任务

顺序队列: 同一时间只执行一件任务,每件任务只有在先前的任务完成后才开始。同时,你并不知道一个任务完成到另一个任务开始之间的间隔时间

例:dispatch_queue_t queue = dispatch_queue_create ( "com.dispatch.serial" ,DISPATCH_QUEUE_SERIAL ); //生成一个串行队列,队列中的block按照先进先出(FIFO)的顺序去执行,实际上为单线程执行。第一个参数是队列的名称,在调试程序时会非常有用,所有尽量不要重名了。

dispatch_queue_t  queue =  dispatch_get_main_queue(); //获得主线程的dispatch队列,实际是一个串行队列。注意无法控制系统自定义线程队列的执行继续或中断


并发队列: 并发队列中的任务可以保证按进入队列的顺序被执行…仅此而已!任务可能以任意顺序完成而且你不知道何时下一个任务会开始,或是任一时刻有多少任务在运行, 这完全取决于GCD

例:dispatch_queue_t  queue =  dispatch_queue_create ( "com.dispatch.concurrent" ,  DISPATCH_QUEUE_CONCURRENT );  //生成一个并发执行队列,block被分发到多个线程去执行

dispatch_queue_t  queue =  dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); //获得程序进程缺省产生的并发队列,可设定优先级来选择四个优先级队列。由于是系统默认生成的,所以无法调用dispatch_resume()和dispatch_suspend()来控制执行继续或中断。以下是四个优先级:DISPATCH_QUEUE_PRIORITY_HIGH,DISPATCH_QUEUE_PRIORITY_DEFAULT ,  DISPATCH_QUEUE_PRIORITY_LOW, DISPATCH_QUEUE_PRIORITY_BACKGROUND  INT16_MIN


队列类型可分为5种:主队列(main queue),四种通用调度队列(global queue),自己定制的队列。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值