2016-08-22 40 views
0

我調用一個方法(名爲A)每秒約3000次,在A方法中,我分配一些資源並執行一些操作。iOS GCD性能如何?

如果我直接在A方法中分配和執行某些操作,它可以正常工作。但是,如果我分配和做的GCD像打擊創造了customed串行線程的東西,它會崩潰

NSString *queueName = [NSString stringWithFormat:@"com.realank.thread"]; 
dispatch_queue_t serialQueue = dispatch_queue_create([queueName cStringUsingEncoding:NSUTF8StringEncoding], NULL); 
dispatch_async(initMidMenu, ^{ 

// alloc and do something 

}); 

所以我覺得爲什麼它會崩潰是因爲對GCD線程性能極限,是任何人都知道這件事?非常感謝〜

+1

顯示更多的代碼。 –

+0

顯示完整的崩潰日誌。 – Droppy

+0

對不起,崩潰的根本原因實際上是併發賽跑。我問這個問題是因爲我找不到任何文件來描述GCD線程的性能。非常感謝 – Realank

回答

0

當您撥打dispatch_queue_create時,您正在分配新的調度隊列。之後您必須使用Apple提及的dispatch_release進行發佈。否則你會用完內存!

https://developer.apple.com/reference/dispatch/1453030-dispatch_queue_create#return-value

你可以通過dispatch_queue_create方法的返回值新創建隊列的引用,然後之後將其釋放。

以下是Apple在文檔中提及的方式。

當您的應用程序不再需要調度隊列時,應該使用dispatch_release函數 釋放它。

+0

非常感謝 – Realank