【问题标题】:What is queue attributes in dispatch_queue_createdispatch_queue_create 中的队列属性是什么
【发布时间】:2016-03-06 15:09:39
【问题描述】:

在 Apple 的示例代码 AVCam-iOS: Using AVFoundation to Capture Images and Movies 中,我注意到以下行:

// Communicate with the session and other session objects on this queue.
self.sessionQueue = dispatch_queue_create( "session queue", DISPATCH_QUEUE_SERIAL );

我想知道第二个参数是关于什么的,除了DISPATCH_QUEUE_SERIAL,我们还有什么其他选择?

令人困惑的是,在其他 Apple 文档中,它说第二个参数是保留的,应该设置为 NULL。似乎文档已过时,谁能解释第二个参数应该是什么?

dispatch_queue_create 函数有两个参数:队列名称和一组队列属性。队列属性保留供将来使用,应为 NULL。 Concurrency Programming Guide

【问题讨论】:

    标签: ios concurrency


    【解决方案1】:
    dispatch_queue_t dispatch_queue_create(const char *label, dispatch_queue_attr_t attr);
    

    队列是使用 dispatch_queue_create() 函数创建的。队列, 像所有调度对象一样,是 引用计数和新创建的队列的引用计数为 1。

    可选的标签参数用于描述队列的用途,在调试过程中很有用 和性能分析。如果提供了标签,则将其复制。按照惯例,客户应该通过 反向 DNS 样式标签。例如:

    my_queue = dispatch_queue_create("com.example.subsystem.taskXYZ", NULL);
    

    attr 参数指定要创建的队列类型,必须是 DISPATCH_QUEUE_SERIAL 或 DISPATCH_QUEUE_CONCURRENT。

    来自https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/dispatch_queue_create.3.html

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2012-11-22
    • 2013-03-17
    • 2010-11-19
    相关资源
    最近更新 更多