2016-03-06 23 views
0

在蘋果的示例代碼,AVCam-iOS: Using AVFoundation to Capture Images and Movies,我注意到這個下面一行:什麼是隊列屬性在dispatch_queue_create

// 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

回答

6
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

+0

如果指定NULL作爲第二個參數,然後一個串行隊列創建。以下是https://developer.apple.com/reference/dispatch/1453030-dispatch_queue_create的鏈接 –