Синхронизация процессов

Тема в разделе "WASM.WIN32", создана пользователем zoool, 15 мар 2008.

  1. zoool

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    Нужно динамически создать разделяемую область памяти, чтобы у моих процессов был доступ к общим переменным.

    Шарабельные секции не катят.
    CreateFileMapping с хэндлом -1 - не подходит
    Мэппинг общего файла - мне совсем не подходит

    Есть ли еще какой-то вариант? Как создать общую область памяти?
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Процессы разные? Если один и тот же, то посмотри fork Неббетта.
     
  3. zoool

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    Именно разные.
    8 абсолютно-разных процесса. И нужен общий буффер, через который можно было бы данными обмениваться.

    Шарабельные секции не тянут, т.к. Софт кроется апх. Апх с шарой не дружит.
    Файл подкачки тоже не рулит, т.к. его может не быть
    Общий файл - палится.

    Вот интересно, можно ли как-то расшарить общий регион памяти.
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.568
    Адрес:
    Russia
    zoool
    Юзай обычную синхронизацию. Пока 1 процесс пишет , другой ждет. При чем, это реализовать в отдельных потоках для каждого процесса.
     
  5. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Это соотносится, да?
    Так ведь CreateFileMapping(INVALID_HANDLE_VALUE,..) сработает, даже если нет файла подкачки. Я проверил только что на XP под VMWare.

    ...Можно ещё заюзать ReadProcessMemory\WriteProcessMemory немногонасколько.
     
  6. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    Верно.
     
  7. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    Запускай еще один "процесс-хранилище". Пусть он после запуска сразу засыпает навеки, чтобы не загружать проц. А все остальные процессы юзают его адресное пространство с помощью Read/WriteProcessMemory как хотят.