Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ViktorBS
Сообщений: n/a
#1

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

27.05.2013, 15:18. Просмотров 388. Ответов 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 и т.д. я в курсе.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 15:18     CreateFileMapping (написать DLL для обмена данными между большим количеством процессов (100-200))
Посмотрите здесь:

C++ Шаблон для обмена данными через память
Удалить строку с самым большим количеством слов C++
C++ Написать функцию для обмена строк двумерного массива
Вывести фамилии преподавателей с количеством часов меньше 200 и название предмета C++
C++ Динамический массив с большим количеством элементов
числа которые в интервале(100-200) читаются как с начала так и с конца C++
C++ Алгоритм быстрой сортировки не работает с большим количеством чисел
C++ Применение массивов случайных чисел с большим количеством элементов
Вычислить разность между количеством отрицательных и количеством положительных элементов одномерного массива C++
Создать цикл for, счетчик которого изменяется от 100 до 200 с шагом 2 C++
Определить номер строки матрицы с наиболее большим количеством нулей C++
C++ Реализовать обработку и файловую запись/чтение массива с большим количеством элементов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 03:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru