2016-08-22 12 views
0

メソッド(Aという名前のメソッド)を約3000回/秒繰り返し呼び出します。メソッドでは、私はいくつかのリソースを割り当てて何かを行います。iOS GCDのパフォーマンスはどうですか?

私は直接メソッドに何かを割り当てて実行するとうまくいきます。しかし、私は割り当て、ブローのようにGCDによって作成された通関シリアルスレッドで何かをすれば、それは

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に電話すると、新しいディスパッチキューが割り当てられます。あなたは後でアップルが言及したようにdispatch_releaseを使用してそれを解放する必要があります。それ以外の場合は、メモリが不足します!

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

あなたはdispatch_queue_createメソッドの戻り値によって新たに作成されたキューへの参照を取得して、後でそれを解放することができます。

ここでは、Appleがそのドキュメントでどのように言及しているかを示します。

アプリケーションでディスパッチキューが不要になったら、 はdispatch_release関数を使用して解放する必要があります。

+0

ありがとう – Realank

関連する問題