全局队列(本质上并发队列)
在创建全局队列的时候需要两个参数优先级&服务质量
全局队列参数分析
参数1:涉及到系统适配;
iOS 8:服务质量
QOS_CLASS_USER_INTERATCTIVE 用户交互(比较高)
QOS_CLASS_USER_INITIATED 用户需要(不要使用耗时操作)
QOS_CLASS_DEFAULT 默认(给系统重置队列)
QOS_CLASS_UTILITY 使用工具(用了做耗时操作)
QOS_CLASS_BACKGROUND 后台执行
QOS_CLASS_UNSPECIFIED 没有指定优先级 0
iOS 7:调度优先级
DISPATCH_QUEUE_PRIORITY_HIGH 2 高
DISPATCH_QUEUE_PRIORITY_DEFAULT 0 默认
DISPATCH_QUEUE_PRIORITY_LOW -2 低
DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN 2 后台优先级
在工作中,一般还是没有淘汰iOS 7;
提示:尤其不要现在background,不管是优先级还是服务质量,线程的执行慢到令人发指!
参数2:这是为未来使用的一个保留,现在始终未0;
- 代码
//全局队列
-(void)GCDSerialQueuesEight {
//全局队列
/*
参数1:涉及到系统适配;
iOS 8:服务质量
QOS_CLASS_USER_INTERATCTIVE 用户交互(比较高)
QOS_CLASS_USER_INITIATED 用户需要(不要使用耗时操作)
QOS_CLASS_DEFAULT 默认(给系统重置队列)
QOS_CLASS_UTILITY 使用工具(用了做耗时操作)
QOS_CLASS_BACKGROUND 后台执行
QOS_CLASS_UNSPECIFIED 没有指定优先级 0
iOS 7:调度优先级
DISPATCH_QUEUE_PRIORITY_HIGH 2 高
DISPATCH_QUEUE_PRIORITY_DEFAULT 0 默认
DISPATCH_QUEUE_PRIORITY_LOW -2 低
DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN 2 后台优先级
在工作中,一般还是没有淘汰iOS 7;
提示:尤其不要现在background,不管是优先级还是服务质量,线程的执行慢到令人发指!
参数2:这是为未来使用的一个保留,现在始终为0;
*/
dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0);
//循环添加10个任务,进入全局队列中
for(int i = 0;i < 5;i++)
{
dispatch_async(q,^{
NSLog(@"0----%@,%d",[NSThread currentThread],i);
});
}
dispatch_queue_t q2 = dispatch_get_global_queue(2,0);
//循环添加10个任务,进入全局队列中
for(int i = 0;i < 5;i++)
{
dispatch_async(q2,^{
NSLog(@"2----%@,%d",[NSThread currentThread],i);
});
}
NSLog(@"come here");
}