0

マルチスレッドの恩恵を受ける長時間実行タスクがあります。

L2S エンティティは、各スレッドによって徐々に追加され、各スレッドはそのエンティティのプロパティにアクセスする必要があります。

エンティティのインスタンスが 1 つというこの要件のため、スレッドごとに複数のデータ コンテキストを使用することは困難です。このような状況を達成するための推奨される方法はありますか?

Linq to SQL を使用する前は、一定数の並列反復の後に XML にシリアル化していました。これは問題なく機能しましたが、その後、データがより複雑になり、SQL で利用可能な関係/クエリが必要になりました。

追加情報: このタスクは、ビデオのフレームを分析して、類似したフレームのシーケンスを見つけます。メディア、フレーム、ショットのテーブルがあります。複数のフレームとショットを持つメディア 複数のフレームを持つショット。フレームの抽出と比較はプロセッサを集中的に使用する操作であり、マルチスレッドの利点があります。

問題は、抽出されたフレームごとです。自分自身を前後のフレームと比較する必要があります。前/後のフレームは、別のスレッドから来る可能性があります。したがって、フレームとショットを処理中の単一のメディア オブジェクトに挿入し直すことは、複数のデータ コンテキストからのエンティティを 1 つに結合することを意味します。

4

1 に答える 1

0

並列 Linq の問題を解決する代わりに、プロセスを変更しました。

複数のスレッドから同じアイテムのリストに同時にアクセスしようとする代わりに。項目のリストを分割し、各セクションにスレッドを割り当てました。

このようにして、各スレッドは互いに衝突することなく、独自のリストで動作できます。次に、リスト間の結合を整理するための仕上げ方法を書きました。

于 2012-12-13T17:00:59.537 に答える