2012-09-04 30 views
4

我的理解是// 001得到一個高優先級的併發隊列最好使用全局或自定義命名的GCD隊列?

// 001 
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0); 

// 002創建一個新的自定義序列隊列

// 002 
dispatch_queue_t queue = dispatch_queue_create("bgQueue", NULL); 

我的問題,是有一個機會,其他進程(在iPhone ,其他應用程序等)將在全局隊列中排隊,因此您可能不得不等待(儘管簡單地)執行。如果是這種情況,最好是總是創建自定義隊列,你知道你有唯一的訪問權限?

回答

8
  • 001得到高優先級隊列,不創建它。三個全局隊列會自動爲您的應用程序創建;他們總是可用的。
  • 這三個全局隊列僅在您的應用程序中是全局的,與全局變量是全局相同。這些隊列對於創建它們的每個應用程序仍是私有的。
  • 私人和全局隊列 之間的主要區別是 曾經是專用隊列 連續,而全球隊列併發。兩者之間的差異總結在Table 3-1 of GCD documentation編輯:在OS X v10.7和更高版本中,私人隊列現在也可以通過傳遞DISPATCH_QUEUE_CONCURRENT(感謝Rob,進行更正)來實現併發。
+0

通過傳遞'DISPATCH_QUEUE_CONCURRENT',專用隊列現在也可以併發。 –

+0

@RobNapier很高興知道!非常感謝您的更正,我編輯了答案以反映您的意見。 – dasblinkenlight

+0

謝謝,是的「得到」不是「創造」,不適當的更新帖子。 – fuzzygoat

0

在專用隊列也可以併發(Lion或更高版本)的平臺上,這與使用全局隊列和專用隊列有何不同?