11

マルチスレッド サーバーを設計するために従うことができるテンプレート/パターン/ガイドはありますか? グーグル検索でオンラインで非常に役立つものを見つけることができません。

私のプログラムは、TcpListener を使用して接続をリッスンするスレッドを開始します。すべてのクライアント接続は、独自の IClientHandler スレッドによって処理されます。サーバーは clientHandler.HandleClient をデリゲートでラップし、BeginInvoke を呼び出してから、その処理を終了します。

また、リッスン スレッドをきれいにシャットダウンできるようにする必要もあります。これは、オンラインであまり見られないことです。

非同期の BeginAceptTcpClient および EndAcceptTcpClient と組み合わせたロック/AutoResetEvents/スレッド マジックの組み合わせがそこに到達すると想定していますが、ネットワーク コードに関しては、すべて完了しています。したがって、私が従うことができるいくつかのパターンがそこにあると信じなければなりません.そして、私が完璧にできるようには見えない無数のマルチスレッドのコーナーケースに完全に混乱することはありません.

ありがとう。

4

2 に答える 2

12

奇妙なことに、Computer Science Assignment のCSC 512 Programming Assignment 4: Multi-Threaded Server With Patternsで何かを見つけるかもしれません。それはC++ブードゥーですが、理論はC#を実行できる人にとっては非常に理解できます。

メインページで素敵な読書の全リストを入手できますが.

于 2008-09-29T15:38:38.013 に答える
3

この前の質問を見てください。

TCP サーバー アプリケーションで使用されるスレッドの数をどのように最小化しますか?

厳密には C# 固有ではありませんが、いくつかの適切なアドバイスがあります。

于 2008-09-29T16:50:05.003 に答える