複数の iDevice を相互に接続して相互にメッセージを送信できる iOS アプリケーションを作成しています。iDevice1 が iDevice2 にメッセージを送信すると、そのメッセージが iDevice2 のキューに挿入されます。iDevice2 の別のバックグラウンド スレッドがこのキューを通過し、メッセージをデキューします。私の質問は2つあり、次のとおりです。
- (アプリが終了するまで) 無期限にループし、キューから項目をポーリングしてデキューするバックグラウンド スレッドを実装する最良の方法は何ですか?
- ループしているバックグラウンド スレッドとメッセージをキューに挿入するスレッドとの間でキューを共有する最善の方法は何ですか?
私はdispatch_asyncグランドセントラルディスパッチアプローチを使用して、さまざまなスレッドでタスクを実行してきましたが、非常にうまく機能しています。キューをポーリングするバックグラウンド スレッドを開始するには、dispatch_async メソッドを使用する必要がありますか? このアプローチは、他のスレッドへの切り替えを処理しますか?それとも、バックグラウンド スレッドが無期限ループを実行しているため、プロセッサを占有しますか? どんな助けでも大歓迎です、ありがとう!