Interprocess Communications

Тема в разделе "WASM.BEGINNERS", создана пользователем Bohdan200, 5 сен 2006.

  1. Bohdan200

    Bohdan200 New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2005
    Сообщения:
    134
    Адрес:
    Lviv
    Есть некая БД "собственной конструкции" и есть несколько (2 - 10) приложений, которым необходимо обеспечить независимый доступ к ней. Все это должно работать на одной локальной машине. Эти "клиентские" приложения должны извлекать из БД (и помещать назад модифицированные) записи в произвольном порядке, средний размер одной записи - ~25кБайт. Это все должно происходить МАКСИМАЛЬНО быстро. Тоесть задержка в получении записи для каждого из 10 клиентов не должна превышать 5мСек.

    Помогите с выбором оптимального метода IPC. Я пока остановился приблизительно на такой схемме: на машине запускается "сервер БД", который создает 2 именованых пайпа (один для пакетов - запросов, другой собсно для данных) и ждет коннекта к ним со стороны клиентской проги, после чего создает отдельный поток для обслуживания клиента. Поскольку БД физически лежит в 3-х файлах на диске, а приложение многопоточное - постает проблема синхронизации и сразу постает вопрос:
    Если один и тот же файл открыть несколько раз из разных потоков одного приложения, будут ли эти потоки "запарывать" друг другу FilePointer?

    Помогите плиз. Заранее спасибо.
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    спроецировать файлы бд. тогда и ФайлПоинтер не нужен.
    создать критическую секцию, чтоб разные потоки одновременно не писАли в один и тот же файл
     
  3. Bohdan200

    Bohdan200 New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2005
    Сообщения:
    134
    Адрес:
    Lviv
    Ну эт понятно, я БД проще в память загружу, оне не большая.
    Но как быть с самим механизмом IPC? Какой выбрать?
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Тебе ж сказали,
    . Это и есть IPC.
     
  5. Bohdan200

    Bohdan200 New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2005
    Сообщения:
    134
    Адрес:
    Lviv
    1. Если использовать MMF придется самому делать синхронизацию доступа к ним из клиентов.
    2. Размер БД постоянно меняется, клиенты вносят и удаляют записи БД. Вначале размер БД = 0. Ну допустим спроецирую 16МБ пустой кусок под буфер, а данные от клиентов превысят этот розмер, и что тогда?