• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы slavon-x86
  • Дата начала
S

slavon-x86

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

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


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

Код:
Repeat 
AssignFile(f);
....
читаем кусок файла
....
CloseFile(f);
.....
отправляем считанный кусок
Until

Или может есть ещё какие-нибудь способы ?
 
S

slavon-x86

Код:
f := TFileStream.Create(Request.Line.Path, fmOpenRead);
Так не работает...
Когда он грузиться с одного потока, то второму он не доступен.
 
S

slavon-x86

Ура нашёл ! fmShareDenyNone - параметр, не блокирующий доступ к файлу.
Код:
 f := TFileStream.Create('Load' + Request.Line.Path,
fmOpenRead + fmShareDenyNone);
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!