07-掌握-GCD基本使用

来源:互联网 发布:帝国cms视频教程 编辑:程序博客网 时间:2024/06/08 08:16

创建并发队列(一般很少用到)

/* 第一个参数:C语言字符串,标签:不安全的指针[-128,127] 第二个参数:dispatch_queue_attr_t类或子类 DISPATCH_QUEUE_CONCURRENT:并发队列 DISPATCH_QUEUE_SERIAL:串行队列 dispatch_queue_create(label: UnsafePointer<Int8>, _ attr: dispatch_queue_attr_t!) -> dispatch_queue_t!*/let queue =  dispatch_queue_create("com.xxx.www", nil);

为什么这里可以写nil

//OC代码中 有一段源码 #define DISPATCH_QUEUE_SERIAL NULL

获得全局并发队列(常用)

/* 获得全局并发队列 dispatch_get_global_queue(identifier: Int, _ flags: UInt) -> dispatch_queue_t! *推荐使用的服务质量类值来确定 *知名全球并发队列: *——QOS_CLASS_USER_INTERACTIVE *——QOS_CLASS_USER_INITIATED *——QOS_CLASS_DEFAULT *——QOS_CLASS_UTILITY *——QOS_CLASS_BACKGROUND * *全球并发队列可能仍然被他们的优先级, *以下哪一个QOS映射到类: DISPATCH_QUEUE_PRIORITY_HIGH:QOS_CLASS_USER_INITIATED DISPATCH_QUEUE_PRIORITY_DEFAULT     :QOS_CLASS_DEFAULT DISPATCH_QUEUE_PRIORITY_LOW :QOS_CLASS_UTILITY DISPATCH_QUEUE_PRIORITY_BACKGROUND  :QOS_CLASS_BACKGROUND flags 永远传0 */let queue = dispatch_get_global_queue(0, 0)

为什么这里可以写0

//OC代码中 有一段源码  #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

获得主队列

let queue = dispatch_get_main_queue()

函数

同步函数

 /*  同步函数  dispatch_sync(queue: dispatch_queue_t, _ block: dispatch_block_t)  第一个参数:队列  第二个参数:block,在里面封装任务  */ dispatch_sync(queue) {     print("sync_download") }

异步函数

 /*  异步函数  dispatch_async(queue: dispatch_queue_t, _ block: dispatch_block_t)  第一个参数:队列  第二个参数:block,在里面封装任务  */ dispatch_async(queue) {     print("async_download") }
0 0
原创粉丝点击