2010-11-29 7 views
1

私は標準的なスレッディングモデルとして次のものを使用する傾向がありますが、それほど素晴らしいモデルではないかもしれません。人々が持っている他のどのような提案、あるいはこれがうまく設定されていると思いますか?これは高性能のインターネットサーバーではありませんが、パフォーマンスは非常に重要な場合があります。その場合は、非同期ネットワーキング方式を使用してバッファを再利用しますが、同じモデルです。スレッド:ネットワーキングスレッド、GUIスレッド、バックエンドスレッドポストオフィスの中間クラス良い設定ですか?

guiを実行するGUIスレッドがあります。

計算量の多いもの(基本的にguiはすぐに実行できないもの)を処理するバックエンドスレッドがあり、着信メッセージやguiアクションの解析と処理を担当します。

必要に応じて送信送信を分割して処理し、さまざまなソケットからパケットを受信し、メッセージに再組み立てする1つ以上のネットワークスレッドがあります。

仲介静的クラスがあり、ネットワークとバックエンドスレッド間の仲介役を果たします。それは郵便局として機能する。外出する必要があるメッセージは、バックエンドスレッドによってネットワーキングスレッドに送信され、このクラスの "送信トレイ"をチェックして、このクラスが持つ静的な "受信トレイ"にすべての受信メッセージを送信および投稿しますfrom、その情報は着信メッセージとともにポストされます)、バックエンドスレッドは、それが動作すべき他のマシンからのメッセージを見つけるためにチェックします。

GUI /バックエンドのスレッドインターフェイスは、より派生する傾向があり、おそらくクラスや代替仲介のような独自のポストオフィスを持つ必要がありますか?

このスレッド設定に関するご意見やご提案はありますか?

答えて

0

このアーキテクチャは、通常はgoodとみなされる古典的なModel-View-Controllerアーキテクチャのように聞こえます。

1

私の主な関心事は、バックエンドスレッドが1つしかないという考え方に自分自身を入れたくないということです。私の通常のモデルは、最初にMVCを使用することです。私が使用するすべてのデータ構造が、スレッド環境で本質的に危険ではないことを確認し、シングルトンを回避してから、狂ったようなプロファイルを作成し、私が活用している条件変数の長い非同期タスクでは、新しいプロセスを生成することをお勧めします。特に、OSに異なる優先順位を与えることができるようなものがあれば、それが望ましいでしょう。

関連する問題