• GCD中的dispatch_get_global_queue(long identifier, unsigned long flags)


    GCD默认已经提供了全局的并发队列供整个应用使用,所以可以不用手动创建。

          创建全局队列的函数为
    dispatch_queue_t q = dispatch_get_global_queue(long identifier, unsigned long flags)
      参数类型为:
    long identifier:ios 8.0 告诉队列执行任务的“服务质量 quality of service”,系统提供的参数有:
     
         QOS_CLASS_USER_INTERACTIVE 0x21,              用户交互(希望尽快完成,用户对结果很期望,不要放太耗时操作)
         QOS_CLASS_USER_INITIATED 0x19,                用户期望(不要放太耗时操作)
         QOS_CLASS_DEFAULT 0x15,                        默认(不是给程序员使用的,用来重置对列使用的)
         QOS_CLASS_UTILITY 0x11,                        实用工具(耗时操作,可以使用这个选项)
         QOS_CLASS_BACKGROUND 0x09,                     后台
         QOS_CLASS_UNSPECIFIED 0x00,                    未指定
         iOS 7.0 之前 优先级
         DISPATCH_QUEUE_PRIORITY_HIGH 2                 高优先级
         DISPATCH_QUEUE_PRIORITY_DEFAULT 0              默认优先级
         DISPATCH_QUEUE_PRIORITY_LOW (-2)               低优先级
         DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN  后台优先级
     
        BACKGROUND表示用户不需要知道任务什么时候完成,如果选择这个选项速度慢得令人发指,非常不利于调试!对于优先级推荐不要搞得太负责,就用最简单,以免发生优先级反转。
         
        unsigned long flags:苹果官方文档是这样解释的: Flags that are reserved for future use。标记是为了未来使用保留的!所以这个参数应该永远指定为0
       如果做ios8.0与ios7.0的适配,可以这样创建全局队列:
    dispatch_queue_t q = dispatch_get_global_queue(0, 0);
       试着用全局队列来做一下异步操作,看看是否为并发执行,如下代码
     dispatch_queue_t q = dispatch_get_global_queue(0, 0); 
  • 相关阅读:
    SQL函数——LENGTH()和LENGTHB()
    简单实用的Windows命令(二)
    简单实用的Windows命令(一)
    简单jQuery实现选项框中列表项的选择
    .net开发笔记(十六) 对前部分文章的一些补充和总结
    .Net开发笔记(十五) 基于“泵”的TCP通讯(接上篇)
    .Net开发笔记(十四) 基于“泵”的UDP通信(接上篇)
    .net开发笔记(十三) Winform常用开发模式第一篇
    .net开发笔记(十二) 设计时与运行时的区别(续)
    Mybatis Spring multiple databases Java configuration
  • 原文地址:https://www.cnblogs.com/kkkore/p/5999710.html
Copyright © 2020-2023  润新知