Есть некая БД "собственной конструкции" и есть несколько (2 - 10) приложений, которым необходимо обеспечить независимый доступ к ней. Все это должно работать на одной локальной машине. Эти "клиентские" приложения должны извлекать из БД (и помещать назад модифицированные) записи в произвольном порядке, средний размер одной записи - ~25кБайт. Это все должно происходить МАКСИМАЛЬНО быстро. Тоесть задержка в получении записи для каждого из 10 клиентов не должна превышать 5мСек. Помогите с выбором оптимального метода IPC. Я пока остановился приблизительно на такой схемме: на машине запускается "сервер БД", который создает 2 именованых пайпа (один для пакетов - запросов, другой собсно для данных) и ждет коннекта к ним со стороны клиентской проги, после чего создает отдельный поток для обслуживания клиента. Поскольку БД физически лежит в 3-х файлах на диске, а приложение многопоточное - постает проблема синхронизации и сразу постает вопрос: Если один и тот же файл открыть несколько раз из разных потоков одного приложения, будут ли эти потоки "запарывать" друг другу FilePointer? Помогите плиз. Заранее спасибо.
спроецировать файлы бд. тогда и ФайлПоинтер не нужен. создать критическую секцию, чтоб разные потоки одновременно не писАли в один и тот же файл
Ну эт понятно, я БД проще в память загружу, оне не большая. Но как быть с самим механизмом IPC? Какой выбрать?
1. Если использовать MMF придется самому делать синхронизацию доступа к ним из клиентов. 2. Размер БД постоянно меняется, клиенты вносят и удаляют записи БД. Вначале размер БД = 0. Ну допустим спроецирую 16МБ пустой кусок под буфер, а данные от клиентов превысят этот розмер, и что тогда?