Форум программистов, компьютерный форум, киберфорум
Наши страницы

CreateFileMapping (написать DLL для обмена данными между большим количеством процессов (100-200)) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ нужна программа для перевода числа из восьмеричной системы счисления в шестнадцатеричную систему счисления http://www.cyberforum.ru/cpp-beginners/thread880568.html
нужна программа для перевода числа из восьмеричной системы счисления в шестнадцатеричную систему счисления.
C++ Объясните что такое массив объединений и с чем его едят Написать программу удаления заданного числового значения из массива объединений. Объясните что такое массив объединений и с чем его едят. http://www.cyberforum.ru/cpp-beginners/thread880562.html
C++ Задача на указатели. Среди точек первого множества найти такую, которая принадлежит наибольшему количеству множеств
На плоскости n множеств по m точек в каждом. Среди точек первого множества найти такую, которая принадлежит наибольшему количеству множеств. Добавлено через 1 час 6 минут Помогите!
Проверить количество скобок C++
Проверить имеется ли в заданном тексте баланс открывающих и закрывающих круглых скобок т. е. верно ли что можно установить взаимно однозначное соответствие открывающих и закрывающих скобок со...
C++ Класс note (поля: фамилия, имя; номер телефона; день рождения; определить методы доступа к этим полям и перегруженные операции извлечения и вставки) http://www.cyberforum.ru/cpp-beginners/thread880527.html
Задача Определить класс с именем NOTE, содержащий следующие поля: фамилия, имя; номер телефона; день рождения (массив из трех чисел). Определить методы доступа к этим полям и перегруженные...
C++ Вывод графика функции на экран Visual C++ 2010 Express Скачал с офф. сайта microsoft и поставил чистую версию Visual C++ 2010 Express. В общем надо вывести график функции на экран на определённом интервале. Нужна помощь так как как графику подключать не... подробнее

Показать сообщение отдельно
ViktorBS
0 / 0 / 0
Регистрация: 24.05.2013
Сообщений: 1

CreateFileMapping (написать DLL для обмена данными между большим количеством процессов (100-200)) - C++

27.05.2013, 15:18. Просмотров 414. Ответов 0
Метки (Все метки)

Добрый день!
Необходимо написать DLL для обмена данными между большим количеством процессов (100-200)
Объем данных заранее не известен и может быть от нескольких кб до 2Г

Решается эта задача на данный момент так:

1. Делаю маппинг CreateFileMapping(INVALID_HANDLE_VALUE, ... на максимальный размер 2Г с использованием флага SEC_RESERVE
2. Проецирую фрагмент в адресное пространство процесса MapViewOfFile блоками размером sysInfo.dwAllocationGranularity
3. Выделяю память через VirtualAlloc блоками размером sysInfo.dwPageSize с флагом MEM_COMMIT (ровно столько, сколько нужно на данный момент)

Вроде все работает, но смущает маппинг на максимальный размер в 2Г. Как себя поведет Windows если этих объектов будет много.
Про возможность расширения секций с использованием NtExtendSection я в курсе, но несколько смущает не документированность этой функции, по этому от нее отказался.

Насколько корректно реализована задача на данный момент и не ждут ли меня проблемы в будущем, т.к. эта DLL будет обслуживать критически важный процесс?
Отзовитесь те, кто в этих вещах разбирается.

P.S. Задача должна быть обязательно решена через память, другие варианты не подходят.
P.P.S. Про синхронизацию, mutex и т.д. я в курсе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.