2009-07-27 2 views
2

2つのソケット(入出力)を使用して接続を開くアプリケーションがあり、それらをスレッドで動作させたいと思っています。スレッド内でソケットストリームを実行する

私はそれらを別々のスレッドにしたいのですが、データを受け取ったときにアプリケーションがフリーズしないようにするためです。アプリケーションが実行されている限り、いつでもこの問題が発生する可能性があります。

現在、ネットワーク通信も処理するクラスがあり、NSOperationでこのクラスを実行していますが、これが最適なソリューションかどうかはわかりません。

あなたが私に非常に感謝するいくつかの助けを与えることができる場合、私は非常にスレッド化に慣れていません。

おかげ

答えて

2

まず、あなたがデータを送受信するために、同じソケットを使用することができることを知っている必要があります - 彼らは一般的に双方向のです。複数の実行スレッド間で同じソケットへの参照を共有できるはずです。

第2に、大量のデータを受け取り、UIでパフォーマンスの問題が発生しない限り、最適化が遅れることになります。 (私は間違ってはいけませんが、これは良い考えですが、時期尚早の最適化はすべての悪の根源ですが、それが適切に実行されれば一般に簡単です)

第3に、NSOperationオブジェクトは " mainメソッドが完了すると、操作タスクを再度使用することはできません。これはあなたのネットワーキングモデルに役立つかもしれません。 NSThreadもご覧ください。 "ファクタリングアウト"という機能を既に持っているということは、あなたのデザインにとって、最高のものが何であれ、それがうまくいきます。

最後に、スレッディングは複雑なトピックですが、特にObjective-Cの場合は、AppleのThreading Programming Guideが適しています。

関連する問題