0

基本的にソケットからデータを受け取り、逆シリアル化を実行してからアプリケーションに渡すコードを書いています。逆シリアル化されたオブジェクトは、IDでグループ化できます(IDは逆シリアル化プロセス中に生成されます)。

アプリケーションのパフォーマンスを向上させるために、C#4.0に付属の新しい並列処理機能を使用したいと思いました。私が持っている唯一の制約は、2つのスレッドが同じIDのオブジェクトにアクセスできないことです。これで、オブジェクト内に配置される同期オブジェクトに対してlock()を実行できることがわかりましたが、これらのロックを回避したいと思います(ここではパフォーマンスが問題になります)。

私が考えたデザイン:

  1. IDによってデータを分割するある種のパーティショナーを作成します(これにより、取得するすべてのバッファーが常に同じオブジェクトIDのグループを持つようになります)。
  2. PLINQのTPLを使用してスレッドを割り当てます

誰かが私にそれを行ういくつかの情報源を提案できますか?

4

1 に答える 1

1

PLINQ複数のプロセッサまたはコア用に開発する場合に提案します。

PLINQは、任意のLINQ-to-ObjectsまたはLINQ-to-XMLクエリを受け入れ、使用可能な場合は複数のプロセッサまたはコアを自動的に使用して実行するクエリ実行エンジンです。プログラミングモデルの変更はごくわずかです。つまり、それを使用するために並行性の第一人者である必要はありません。実際、すべてがどのように機能するかを理解するために内部に潜り込みたい場合を除いて、スレッドとロックは表示されません。PLINQは、Microsoft®.NETFrameworkの次世代同時実行サポートであるParallelFXの主要コンポーネントです。

これは以下をカバーします:

  • LINQからPLINQへ
  • PLINQプログラミングモデル
  • クエリ出力の処理
  • 同時例外
  • 出力結果での順序付け
  • 副作用
  • PLINQを機能させる

並列LINQ(PLINQ)

于 2012-08-12T09:34:24.690 に答える