典型的なサーバー アプリケーションは、着信接続ごとにソケットを作成し、新しいスレッドを生成します。
ただし、単一のスレッドで自分でデマルチプレクサを実行することは可能ですか? 私が望むのは、データが単一のスレッドで利用可能になると、アプリケーションがメッセージを逆シリアル化するエンドポイントごとにステートマシンを保持することです。
スレッド化は最も単純であり、私はそれを実際に実装しています。ただし、各スレッドはオーバーヘッドをかなり急速に追加し、接続が長引くとリソースが必要になります。私が望むのは、代わりに、ステート マシンが接続ごとにメッセージを作成し (スレッド化されたコードは既に実行しています)、完了時に非シリアル化されたメッセージをワーカー キューにディスパッチすることです。
これは .NET で可能ですか? P/Invoke も許容できるソリューションです。