0

ハードドライブから多くの画像をロードして計算を行うコードを最適化しようとしています。処理を高速化するための最初の試みは、イメージごとNSOperationQueueに個別にロードして計算を行うを作成することでした。NSOperations

残念ながら、実際にかかる時間は短縮されませんでした。

理由の 1 つは、 を作成してNSOperationsに追加することによって発生するオーバーヘッドである可能性がありますqueue。別の考えられる理由は、ハード ドライブがマルチスレッドで動作するように設計されていないため、ファイルを 1 つずつ読み取る代わりに、ディスクのヘッダーがセクター間を行き来する必要があることです。

したがって、私の質問は、obj-CまたはCコードをアトミ​​ックに実行する方法があるかどうかです。そのためNSOperation、ファイルを読み取っている間、別のファイルを読み取ろうとする何らかの操作によって妨げられることはありませんが、それでもすべてのNSOperationsユーザーがイメージに対して計算を実行できます。 ?

4

2 に答える 2

2

単純にGCD (Grand Central Dispatch) を使用して、明示的なスレッド化を忘れてみませんか?

ここにそれに関する良いAppleガイドがあります

于 2012-12-18T11:45:28.400 に答える
0

NSLockクラスを見てください。これにより、クリティカル セクションを実装できます。

于 2012-12-18T11:46:58.870 に答える