Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Кеширование


Автор: Spalax 17.5.2006, 23:44
Вообщем ооочень нуждаюсь в умном совете .
Проблема заключаеться в том что у меня есть Парент который стартует 18 чаелдов все они находяться в состоянии accept . Когда они получают запрос от клиента они организуют из етого запроса понятный путь к файлу и вот сдесь мне не надо чтобы он лез в файл сразу ... а надо чтобы он залез в общий кешь посмотрел есть ли там а если нету то только тогда лез в файл .... надеюсь все поняли ... просто сама проблема в том что я уже организововал тако кешь ... но увы сервер сказал "кря" через 2 суток работы потому что каждый процес при старте копировал огромный масив себе плюс пополнял его .... + отрабатывал 14 клиентов и родитель его закрывал соответствено вызывая нового чаелда ... вообщем такая вот вертушка .... если у кого есть путные идее выслушаю очень поможете....
У меня ФРЯ 4.4 из средств IPC можно юзать только mmap ну и семейство Shared Memmory Типа shm_***  

Автор: GrayCardinal 18.5.2006, 07:29
Spalax
Вы не могли бы поподробней описать технические аспекты вашей проблемы ? "Сервер сказал "кря"" это, извиняюсь, не проблема, это извиняюсь, диагноз. В чем тех. проблема ?

В передаче данных между процессами ? Медленно копируется весь массив ? Что за массив ? Почему он копируется ?
В блокировке, чтоб одновременно не модифицировали данные ? Какие данные ? Почему нужна блокировка ? 

Да, и mmap это не средство IPC если уж на то пошло.
.

Добавлено @ 07:34 
P.S
void * ptr;

Цитата

ptr = mmap (NULL, 4096, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_SHARED, -1, 0)

По логике должна выдать (ptr) кусок (4096) байт. Который будет доступен всем процессам даже после fork'а. Может вам это надо ? 

Автор: Spalax 18.5.2006, 09:52
Вообщем мой кешь отъедал здоровенный кусок памяти так как каждый процесс копировал себе динамический массив такого вида 
map <string,string> cache
  

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