0

構造化ストレージ形式のファイルがあります。この形式がスレッドによって同時にアクセスされるかどうか疑問に思っていました。

つまり、複数のスレッドが異なるストリームを読み取って一度に処理します。目的は、ファイルをより速くロードすることです。

ファイルを参照するときは、CAD 情報を表すファイルを参照します。

4

2 に答える 2

0

スレッドに関する問題は、常にリソースの共有に帰着します。どのリソースを共有するかを定義し、大量の処理を並行して実行できるようにリソースを共有できるかどうかを判断します。

ファイルの先頭にある目次から多くの小さな独立したデータ構造を構築している場合は、スレッドの恩恵を受ける可能性があります。各スレッドは、他のスレッドとは無関係に、ファイルのどの部分を読み取るか、読み取ったデータをどう処理するかを、他のスレッドと対話することなく認識します。

関連するデータ構造の大規模なツリーまたは階層を構築している場合、またはデータの次のビットの位置がデータの前のビットに依存している場合、いくつかのスレッドが互いに待機して拘束される可能性があります。あるスレッドがデータのチャンクを読み取ってキューに入れ、別のスレッドが処理できるようにすることで、まだメリットが得られる場合があります。

ほとんどの場合、上記の例の間である程度のバランスをとることができます。ファイル リーダー スレッドが 1 つと、処理スレッドの小さなプールがある場合があります。処理スレッドは、単一のアセンブル スレッドの結果をキューに入れ、存在する階層または関係に編成する場合があります。

互いに待機しているスレッドがある場合、スレッドは必要ありませんでした。処理のためにキューにアトミックに追加できるデータの独立したチャンクがある場合、スレッドが活躍します。

外部性に応じて、スレッドは微妙な方法で互いに干渉する可能性があります。たとえば、読み取りスレッドが複数あると、ハード ドライブのシーク時間が長くなり、最終的にパフォーマンスが低下する可能性があります。

于 2010-05-17T04:31:07.353 に答える
0

簡単な答えはイエスです。

より長い答えは、構造化ストレージは COM の一部であり、COM スレッド モデル (アパートメント モデルと呼ばれることもあります) は Win32 スレッド モデルとは異なり、アパートメント間でデータをマーシャリングするための独自のルールと API を持っているということです。

これに着手する前に、ストレージメカニズムが本当に構造化ストレージである必要があるかどうかを自問してください...IMOは、傷の世界を除いて、標準IOをはるかに超えるものはありません(スレッドに関して)

実際の構造化部分は非常に基本的なものであり、どの XML ファイルもはるかに構造化されています。

于 2010-05-17T04:33:43.073 に答える