2

私は大量の引用データを処理するためにC ++アプリに取り組んでいます. (MSFT、AMZN など) と tbb。そして、それをどのように構成するかを考えていました。私はparallel_forとpipelineとconcurrent_queueを見てきました。

プロセスは基本的にデータを解析し、処理してファイルに出力します。解析と処理は並行して実行できますが、出力はシンボルごとに順番に行う必要があります。

例えば。入力:
    - メッセージ #1 - AMZN #1
    - メッセージ #2​​ - AMZN #2
    - メッセージ #3 - IBM #1
    - メッセージ #4 - AMZN #3
    - メッセージ #5 - CSCO #1
    - メッセージ $6 - IBM #2

ロックフリーのソリューションまたは最小限のロックを使用したいのですが、順序を維持するためにconcurrent_queueを保持しているようです。

どんなアイデアでも役に立ちます

ありがとう、デビッド

4

3 に答える 3

1

パイプライン パターン (tbb::pipelineクラスまたはtbb::parallel_pipeline()関数) を使用する場合は、順序付きフィルターを使用して、入力が受信された順序とまったく同じ順序で出力が表示されるようにすることができます。また、注文のためにコードにロックは必要ありません。

于 2011-05-24T11:37:51.827 に答える
0

見積もりデータにはタイムスタンプまたはシーケンス番号がありますか?
それ以外の場合は、プロデューサースレッドからシーケンス番号を追加し、解析後にシーケンス番号に基づいてデータを並べ替えます-再ソートは、バッチで、または書き込みの直前に実行できますファイル。

于 2012-01-20T09:12:48.987 に答える
0

キーが表示される要素(1番目、2番目、...)の位置であり、値が表示されるデータである出力構造(ハッシュまたはリスト)を作成できます。次に、すべての要素の準備ができたら、構造を目的の順序で出力できます。

このように、どのスレッドが最初に終了するかを気にする必要はありません。

于 2012-01-20T10:34:50.797 に答える