Асинхронное чтение данных из файла

slavon-x86

Well-Known Member
18.12.2005
215
0
#1
Пишу HTTP сервер и столкнулся со следующей проблемой:
Получается что к примеру User1 загружает файл 1.rar и пока он не загрузит этот файл, то User2 не сможет его загрузить.

Код:
AssignFile(f);
....
CloseFile(f);

Сразу в голову приходят 2 способа:
1. Загрузить файлы полностью в оперативу, однако если будут многообьёмные файлы, то оперативы не хватит
2. Читать по кускам, однако этот способ мне неособо нравиться

Код:
Repeat 
AssignFile(f);
....
читаем кусок файла
....
CloseFile(f);
.....
отправляем считанный кусок
Until
Или может есть ещё какие-нибудь способы ?
 

slavon-x86

Well-Known Member
18.12.2005
215
0
#2
Код:
f := TFileStream.Create(Request.Line.Path, fmOpenRead);
Так не работает...
Когда он грузиться с одного потока, то второму он не доступен.
 

slavon-x86

Well-Known Member
18.12.2005
215
0
#3
Ура нашёл ! fmShareDenyNone - параметр, не блокирующий доступ к файлу.
Код:
 f := TFileStream.Create('Load' + Request.Line.Path,
fmOpenRead + fmShareDenyNone);