什么是dispatch_queue_create中的队列属性



在Apple的示例代码AVCam-iOS中:使用AVFoundation捕获图像和电影,我注意到以下行:

// 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。并发编程指南

dispatch_queue_t dispatch_queue_create(const char *label, dispatch_queue_attr_t attr);

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

可选的 label 参数用于描述队列的用途,在调试期间很有用 和性能分析。如果提供了标签,则会复制该标签。 按照惯例,客户端应通过 反向 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