创建并发队列(一般很少用到)
/*
第一个参数: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")
}