我使用多线程读取文件,每个线程都单独打开文件,
在读取过程中,每个线程起始位置不同,总有线程对文件读取一段记录以后就停止了
,读出的字节为-1,请问这中方式操作,每个线程读取文件的指针是独立的么?
代码如下:
TotalSize:=FileOpen(FFileName,fmOpenRead or fmShareDenyNone) ;
FileSeek(TotalSize,FStartByteS,0);
//FStartByteS起始位置每个线程不同
try
GetMem(Buffer, MaxBufSize);
while Count > 0 do
begin
if Count > MaxBufSize then N := MaxBufSize else N := Count;
iBytesRead := FileRead(TotalSize, Buffer^, N);
//写入缓冲区
Data.Clear;//自定义结构
Data.Write(Buffer^,iBytesRead)//写入Data
Dec(Count, iBytesRead);
end;
finally
FileClose(TotalSize);
FreeMem(Buffer, MaxBufSize);
end;
在读取过程中,每个线程起始位置不同,总有线程对文件读取一段记录以后就停止了
,读出的字节为-1,请问这中方式操作,每个线程读取文件的指针是独立的么?
代码如下:
TotalSize:=FileOpen(FFileName,fmOpenRead or fmShareDenyNone) ;
FileSeek(TotalSize,FStartByteS,0);
//FStartByteS起始位置每个线程不同
try
GetMem(Buffer, MaxBufSize);
while Count > 0 do
begin
if Count > MaxBufSize then N := MaxBufSize else N := Count;
iBytesRead := FileRead(TotalSize, Buffer^, N);
//写入缓冲区
Data.Clear;//自定义结构
Data.Write(Buffer^,iBytesRead)//写入Data
Dec(Count, iBytesRead);
end;
finally
FileClose(TotalSize);
FreeMem(Buffer, MaxBufSize);
end;
所有线程要排队等候