我有一個將從多個線程讀取的文件,我是否需要將每個查找並讀入關鍵部分?多線程文件讀取,是否需要查找和閱讀需要關鍵部分?
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,所以我可以使用互操作在某些點上的內存映射,但還沒有 – tbridge
文件有多大?你甚至可以將它加載到一個字節[]中,並從不同的線程並行讀取數組 – Yahia
我不想將整個東西加載到內存中,否則是的,那個owuld是很好的 – tbridge