基本的にソケットからデータを受け取り、逆シリアル化を実行してからアプリケーションに渡すコードを書いています。逆シリアル化されたオブジェクトは、IDでグループ化できます(IDは逆シリアル化プロセス中に生成されます)。
アプリケーションのパフォーマンスを向上させるために、C#4.0に付属の新しい並列処理機能を使用したいと思いました。私が持っている唯一の制約は、2つのスレッドが同じIDのオブジェクトにアクセスできないことです。これで、オブジェクト内に配置される同期オブジェクトに対してlock()を実行できることがわかりましたが、これらのロックを回避したいと思います(ここではパフォーマンスが問題になります)。
私が考えたデザイン:
- IDによってデータを分割するある種のパーティショナーを作成します(これにより、取得するすべてのバッファーが常に同じオブジェクトIDのグループを持つようになります)。
- PLINQのTPLを使用してスレッドを割り当てます
誰かが私にそれを行ういくつかの情報源を提案できますか?