0

私のアプリは、dispatch_async()呼び出しを使用して多くのスレッドを作成していると思われます。50スレッドと80スレッドの北でクラッシュレポートを見てきました。これは、私が作成しておらず、完全に分析していない大規模なコードベースです。私がやりたいのは、スレッドの使用状況のプロファイルを取得することです。作成するスレッドの数、作成するタイミングなど。

私の目標は、スレッドの交換にすべての時間を費やしていることを理解することです。NSOperationQueueを使用する方がよい場合は、willy-nilly全体でブロックをdispatch_asyncするだけの場合よりも、より詳細に制御できます。

これを調査するためのアイデア/テクニックは大歓迎です。

4

2 に答える 2

1

楽器を見る必要があるようです。AppleドキュメントやWWDCセッション、または必要な場所からそれについて学びましょう。多くのリソースがあります

一般に、いくつかの依存関係を実装する必要がある場合は、NSOperationQueuesの方が確実に優れています。


Brad Llarsonが指摘したように、多くの場合に役立つWWDCセッションがいくつかあります。ただし、呼び出しを最適化するだけでなく、コードをより人間が読める形式にし、単純に改善することを検討する必要があります。iOSで80キューものソースコードを見たことがありません。アプリのアーキテクチャに何か問題があるはずです。

私が間違っている場合は誰かに知らせてください。

于 2012-08-16T17:15:56.877 に答える
1

その数のスレッドを回転させている場合は、I/Oバウンドである可能性があります。また、Mikeの記事は素晴らしいですが、かなり古いものです(ただし、通常のキューにはまだ関連しています)。

を使用する代わりに、I/O要件にandfriendsを使用dispatch_asyncする必要があります。dispatch_ioそれらはすべての非同期監視とコールバックを処理します...そして無関係な処理スレッドでプロセスをオーバーランすることはありません。

于 2012-08-16T23:28:10.903 に答える