GCD

原创 2015年11月18日 20:26:46

GCD

只有两种队列:一种是串行(一种),一种是并发队列(四种)

  • Serial 串行队列,先创建dispatch_queue_creat(const char *label,dispatch_queue_attr_t attr))(系统默认的主队列)

  • Concurrent 并发队列 dispatch_queue_t dispatch_get_global_queue( long priority,unsigned long flags);
    第一个参数:用于指定优先级
    第二个参数:目前未使用并且应该始终为0

 #define    DISPATCH_QUEUE_PRIORITY_HIGH

 #define    DISPATCH_QUEUE_PRIORITY_DEFAULT

 #define    DIPATCH_QUEUE_PRIORITY_LOW

 #define    DISPATCH_QUEUE_PRIORITY_BACKGROUND

主队列:Main dispatch queue

dispatch_queue_t dispatch_get_main_queue(void)

常用方法

  • 异步派发
    void dispatch_async(dispatch_queue_t queue,dispatch_block_t block);

  • 同步派发
    void diospatch_sync (dispatch_queue_t queue,dispatch_block_t block);


一个很重要的方法
dispatch_async(sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT)^{ //耗时的操作
dispatch_async(dispatch_get_main_queue(),^{
//更新界面
});
});

障碍只用于自定义的并发队列
只有并发序列才可以用dispatch_barrier_sync,屏障的作用就是只有其前面的任务全部执行完毕后,才会执行它本身和以后的任务

单例

static dispatch_once 很有用 ,使用单例,必须用dispatch_once来声明(保证一个单例的地址不管在哪个线程中使用都是一致的),静态声明比全局声明更方便,

如果某些任务需要另一些任务完成后才执行,可以使用dispatch_group_t

相关文章推荐

最大公约数GCD

  • 2013年07月22日 22:25
  • 283B
  • 下载

iOS多线程开发——GCD的使用与多线程开发浅析

我在前面的博客中《GCD实践——串行队列/并发队列与IOS多线程详解》中对iOS中的同步异步、串行并行做了较为详细的讲解。在之后的几篇GCD实践的博客中对GCD的使用也有较为详细的实现。但是我们要注意...

IOS_多线程-GCD的基本使用

  • 2015年05月31日 07:50
  • 424B
  • 下载

GCD_deom练习

  • 2013年06月18日 17:22
  • 477KB
  • 下载

iOS多线程--下(GCD)

1 GCD它是一种纯C语言,它是为多核并列运算设计的。可以自动管理线程的生命周期。 GCD 是面向任务和队列的,不是面向线程的。他有两个关键字“任务”“队列”。 使用 GCD 的步骤主要是: 1...

GCD资源竞争Demo

  • 2014年01月23日 21:05
  • 8KB
  • 下载

Behavioral GCD in Verilog

  • 2014年11月11日 23:44
  • 377B
  • 下载

经典算法(3)- 用二进制方法求两个整数的最大公约数(GCD)

二进制GCD算法基本原理是:  先用移位的方式对两个数除2,直到两个数不同时为偶数。然后将剩下的偶数(如果有的话)做同样的操作,这样做的原因是如果u和v中u为偶数,v为奇数,则有gcd(u,v)=g...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GCD
举报原因:
原因补充:

(最多只允许输入30个字)