C#のマルチスレッドネットワークサーバーのパターン
-
02-07-2019 - |
質問
マルチスレッドサーバーを設計するために従うことができるテンプレート/パターン/ガイドはありますか? Google検索でオンラインでひどく役立つものを見つけることができません。
私のプログラムは、TcpListenerを使用して接続をリッスンするスレッドを開始します。 すべてのクライアント接続は、独自のIClientHandlerスレッドによって処理されます。サーバーはclientHandler.HandleClientをデリゲートでラップし、BeginInvokeを呼び出してから、その処理を終了します。
また、リスニングスレッドをきれいにシャットダウンできるようにする必要がありますが、これは多くのオンラインのサンプルを見つけることができません。
非同期のBeginAceptTcpClientとEndAcceptTcpClientを組み合わせたlock / AutoResetEvents / threading magicの組み合わせがそこに到達すると思いますが、ネットワーキングコードに関しては、すべて完了です。だから私は、私が従うことができるいくつかのパターンがあり、完璧になるとは思えない無数のマルチスレッドコーナーケースに完全に混乱しないように信じなければなりません。
ありがとう。
解決
奇妙なことに、コンピュータサイエンスの課題、 CSC 512プログラミング割り当て4:パターン付きマルチスレッドサーバー 。 C ++のブードゥー教だが、理論はC#を実行できる人には非常に理解しやすい。
- アクセプター/コネクター
- 監視オブジェクト
- スレッドセーフインターフェース
- ラッパーファサード
- スコープロック
- 戦略的ロック
- リアクター
- Half Sync / Half-Async
- リーダー/フォロワー
ただし、メインページ。
他のヒント
所属していません StackOverflow