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

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

slavon-x86

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

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


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

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

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab