0

NSMutableArrayiOS ゲームのメイン スレッドから主にアクセスされる があります。2 ~ 3 秒ごとに、このグリッドに対して高価な操作を実行する必要があります。グリッドを変更する必要はありません。いくつかの計算を行って結果を返すだけです。バックグラウンド スレッドでグリッドを効率的かつ安全に使用するにはどうすればよいですか?

これまでのところ、グリッドをコピーしてオブジェクトとして渡すことだけを考えてきましたperformSelectorInBackground。ただし、これは潜在的に無駄に思えます。また、バックグラウンド スレッドからグリッドの参照にアクセスし、バックグラウンド スレッドが処理を完了するまでメイン スレッドがグリッドに書き込まないようにすることも検討しました。ただし、これはリスクが高いと感じており、それが一般的な方法であるかどうかはわかりません。

4

1 に答える 1

0

それはすべて、グリッドに書き込めない場合にゲームを停止または減速する必要があるかどうかによって異なります。そうであれば、バックグラウンドで実行するという目的が無効になります。グリッドに書き込みを行わなくてもゲームが正常に続行できる場合は、それが最適なオプションです。バックグラウンド処理が終わるまでは書き込まないように気を付ければ危険ではありません。

ゲームの速度が遅くなる場合は、コピー ルートを使用します。

これらは両方とも、グリッド クラスで直接処理できます (処理を行っている場合)。グリッドを「ロック」する方法があり、処理が完了するまでグリッド オブジェクトに変更をキューに入れることができます。処理が完了したら、すべての操作をループして適用できます。このようにして、グリッドがロックされていても、すべてが通常どおり続行できます。

于 2012-10-22T02:34:10.487 に答える