Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > :) Общий файл в общей папке локальной сети...


Автор: PostEr 25.7.2003, 12:54
Мне нужно, чтобы работало 2 приложения, открывающих и закрывающих один и тот же файл, с БОЛЬШОЙ частотой. То есть порядка 20 открытий для записи (первая прога) и 20 открытий для чтения (работает вторая прога) в СЕКУНДУ. Вроде сделал, и всё работает. Компы соединил без хаба, а напрямую, скорость 10мбит\с. Передаётся порядка 100 байт при каждом обращении, так что скорость нужна около всего 16кбод, но тормоза идут страшные %( Чё делать? Обязательно, чтобы взаимодествие было только через файл

Автор: <Spawn> 25.7.2003, 14:32
Тормоза в системе или в твоей программе?

Автор: PostEr 25.7.2003, 18:27
А я и не знаю, но не в системе . То есть в проге, да!

Автор: Vit 26.7.2003, 07:13
Вообщето именно для этого случая сервера баз данных придумывали...

Автор: PostEr 27.7.2003, 07:37
да куда мне базы данных??? Я на сервер хочу сам перейти, но просто проект нужно предъявлять уже, а у меня сам праблемс.

Автор: <Spawn> 27.7.2003, 10:57
Если тормоза в программе, то тогда попробуй код открытия/закрытия файлов перенести в отдельный поток.

Автор: Medved 27.7.2003, 18:50
Цитата(PostEr @ 27.7.2003, 10:37)
да куда мне базы данных??? Я на сервер хочу сам перейти, но просто проект нужно предъявлять уже, а у меня сам праблемс.

Лучше переделай на БД. В любом случае ранее или поздно это придется делать.

Автор: PostEr 27.7.2003, 20:02
Pegas sad.gif Я не понимаю: как можно тут базы данных применить?

<Spawn> А поток как выделить?

Автор: Medved 28.7.2003, 02:05
Цитата(PostEr @ 27.7.2003, 23:02)
Pegas sad.gif Я не понимаю: как можно тут базы данных применить?

А для чего у тебя два приложения открывают с такой частотой файл?

Автор: <Spawn> 28.7.2003, 05:31
Цитата(PostEr @ 27.7.2003, 12:02)
<Spawn> А поток как выделить?

File>New>Other>Thread Object .В OnExecute помещяешь свой код. Затем из своего приложения делаешь что то типа этого:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
MyThread:TMyThread;
begin
MyThread:=TMyThread.Create(True);
MyThread.FreeOnTerminate:=True;
<Какие либо настройки>
MyThread.Resume;
end;

Автор: Vit 28.7.2003, 06:35
Цитата(PostEr @ 27.7.2003, 11:02)
Pegas sad.gif Я не понимаю: как можно тут базы данных применить?

<Spawn> А поток как выделить?

Объясни подробнее что ты делаешь, попробуем подумать, но это в 99% это именно та ситуация где скорее всего надо применять сервер баз данных... Если напишешь что да зачем попробуем объяснить как это реализовать...

Автор: PostEr 28.7.2003, 15:33
Прикольно smile.gif (я про потоки) . А я и не знал что это так просто в дэлфях!

Мне было нужно (нужно) , чтобы 2 приложения системы визуализации обменивались данными через файл. Чтение происходит 20 раз в секунду (желательно конечно больше). Можно было использовать клиент\серверсокеты, но я тогда когда делал не думал об этом. И передавались у меня производные (скорости разные и т.п.), а сейчас мне надо проинтегррованные значения передавать и возникают тормоза. Я бы переделал, но мне проект уже на днях предяъявлять smile.gif

А зачем можно базы данных с такой частотой открывать? Конечно понимаю если около 100 клиентов работают с одной бд...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)