私は複数のスレッドから読み込まれるファイルを持っていますが、それぞれのシークと読み込みをクリティカルセクションに入れる必要がありますか?私は避けるようにしようとしているものを明らかにマルチスレッドファイルの読み込み、シーク&リードにクリティカルセクションが必要ですか?
stream.Seek(seekStart, SeekOrigin.Begin);
stream.Read();
stream.Seek(seekNext, SeekOrigin.Current);
stream.Read();
または
lock(fileLock)
{
stream.Seek(seekStart, SeekOrigin.Begin);
stream.Read();
stream.Seek(seekNext, SeekOrigin.Current);
stream.Read();
}
次のような状況です。
.
.
Thread A: Seek
<- Preempted ->
Thread B: Seek
Thread B: Read
<- Preempted ->
Thread A: Read (Will this be reading from the wrong location?)
.
.
私は3.5になっていますので、ある時点でinteropをメモリマップに使用していますが、まだありません – tbridge
ファイルの大きさはどれくらいですか?あなたはそれをバイト[]にロードして、その配列から別のスレッドから並列に読み出すこともできます – Yahia
メモリ全体をロードしたくないです。 – tbridge