【问题标题】:How to declare Grand Central Dispatch如何申报 Grand Central Dispatch
【发布时间】:2012-02-08 01:58:57
【问题描述】:

我正在使用我为 GCD 找到的一个相当不错的教程,其中向您展示了如何声明一个新的调度队列。

Grand Central Dispatch 使用队列进行操作。队列是 C 类型定义: dispatch_queue_t。为了获得一个新的全局队列,我们​​调用 dispatch_get_global_queue(),它有两个参数:一个 long for 优先级和未使用的选项的无符号长整数,因此我们将 通过 0ul。以下是我们获得高优先级队列的方法:

它说像这样将 0ul 作为参数传入

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

我希望有人可以向我解释一下 0ul 是什么?为什么包含它?

【问题讨论】:

    标签: iphone ios grand-central-dispatch


    【解决方案1】:

    它只是 0 并且 ul 告诉编译器您希望它是一个无符号长整数以匹配函数签名。

    dispatch_queue_t dispatch_get_global_queue(long priority, unsigned long flags);

    如果您不添加 ul,0 将被视为整数,这可能会导致编译器警告。

    请看这里的文档。

    https://developer.apple.com/library/mac/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html

    【讨论】:

    • 嗯,对,这样就可以为队列中的对象设置标记(因为没有更好的词)。它与我的数据类型没有任何关系想要多线程等?
    • 它完全没有效果,如果你查看文档你会发现它是一个未使用的参数,因此为 0。
    • 酷,感谢您的回复,让它工作了。我觉得这应该更复杂(多线程),但事实并非如此!好奇怪!
    • 复杂的部分是让它不会随机崩溃/挂起/丢失数据,而不是让它首先工作。线程(至少在琐碎的情况之外)仍然非常困难。
    猜你喜欢
    • 2012-05-09
    • 1970-01-01
    • 2011-07-28
    • 2023-03-25
    • 2012-11-27
    • 2011-06-04
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多