2

TPL Dataflow ProducerConsumer パターンに関する新しい質問で、Svick によって既に回答されています。

  1. 2 GB の 4 つのファイルを並行して処理する必要があり、ファイル コンテンツ バッファーをバッファーごとに読み取る必要があります。(ここではプロデューサー パターンを使用します。Maxdegreeofparallelism = 4 で、一度に 4 つのバッファーを投稿できます)
  2. バッファを処理し、中間テーブルに書き込む必要があります。(ここではコンシューマー パターンを使用します。)
  3. インメモリ データ テーブルは、ビジネス ルールに従って変換され、正規化されたテーブルに書き込まれます。
  4. メモリ内データは、データの最終バージョンの検証のために再利用されます。

現在、3段目と4段目はブロックを使用していません。消費者からの順次関数呼び出しを介して。

  1. このデザインは正しいですか?
  2. 4 つのブロックを 1 つずつパイプライン処理し、プロデューサーとコンシューマーのアプローチを使用する以外に、それらすべてを並列に処理する方法はありますか? このための小さなサンプル コードを教えてください。
4

1 に答える 1

0

あなたのデザインは正しいように見えますが、このような短い説明からはわかりません。

TDF でパイプラインを作成する場合、通常は some を使用しIPropagatorBlockますTransformBlock

TransformBlockブロックの入力ごとに単一の出力を生成する場合に機能します。しかし、それはあなたの場合には当てはまらないようですのでTransformManyBlock、各入力(0または1を含む)に対して任意の数の出力を生成できる を使用することをお勧めします。

別のオプションは、出力を作成するときに次のブロックに直接Post()(または) することです。await SendAsync()

于 2013-01-29T13:44:45.827 に答える