私は、ネイティブの連絡先をサーバーにアップロードして応答を取得するアプリに取り組んでいます(JSON、既にアプリをインストールした連絡先リスト)。ネイティブの連絡先が十分に大きい場合、サーバーの応答は遅くなり、不安定になります。また、ユーザーは他のことを行うことができません。そのため、ネットワーク リクエストをバックグラウンド スレッドに入れました。100 件の連絡先をアップロードするたびに、いくつかのタスクを実行してから、ループが終了するまで次の 100 件の連絡先をアップロードします。
しかし、実行すると、結果は期待どおりではありません。バックグラウンドスレッドが実行されているため、サーバーをリクエストし続けます。UI スレッドがブロックされています。まだ何もできません。
これは、バックグラウンド スレッドでの長いループの原因ですか? 私は2つのスレッドを持っていますが、それらはCPUリソースを競合します(テストデバイスはiPod、1コアです。これはコア数に関連していない可能性があります)?
この種のシナリオを処理する方法についてのヒントを誰か教えてもらえますか? 前もって感謝します!
アップデート:
根本的な原因を見つけました。App デリゲートのグローバル変数が間違った値に設定されているため、UI の動作がおかしい。これは、すべてのネットワーク要求メソッドをコメントすることで見つけました。したがって、この問題はマルチスレッドとは関係ありません。ご迷惑をおかけして申し訳ありません。