19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
1

Разделяемая память без сервера и клиента

04.11.2012, 03:11. Показов 1598. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть контейнер vector из простых объектов:
C++
1
std::vector<int> v;
Он соответственно расположен в едином куске памяти.
Есть несколько пользовательских равноправных приложения. Необходимо чтобы первое запущенное приложение создавало данный вектор в разделяемой памяти, а все последующие подключались к ней.
При этом необходимо организовать полную равноправность, так, чтобы вектор удалялся только после завершения всех приложений. Таким образом должно получиться так, что данный вектор живет пока существует хотя бы один процесс данного приложения.
Возможно ли такое организовать через какую-то библиотеку, без велосипедостроения?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2012, 03:11
Ответы с готовыми решениями:

Разделяемая переменная для клиента и сервера
Вопрос такой.. Реализован клиент-сервер на сокетах. Как завести целочисленную переменную, изменение...

Разделяемая память POSIX IPC как узнать, что память выделена и её уже можо использовать?
1. Описание проблемы: Две программы. Одна пишет в разделяемую память, другая читает. Из-под...

Как Memcashed с сервера задействует оперативную память клиента?
Добрый день! Читаю про Memcashed. Пока не углублялся, и возник вопрос. Насколько я понял,...

Отправка данных с сервера на компьютер без клиента по ip
можно ли отправить файл через программу на компьютер , на котором нет данной программы? если да то...

7
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
05.11.2012, 12:29 2
Цитата Сообщение от Damaks Посмотреть сообщение
Возможно ли такое организовать через какую-то библиотеку, без велосипедостроения?
STL чем-то не устраивает?
0
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
05.11.2012, 22:33  [ТС] 3
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
STL чем-то не устраивает?
Можно пример?
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
05.11.2012, 22:45 4
Цитата Сообщение от Damaks Посмотреть сообщение
Можно пример?
Понятно, что без специального api специальный кусок памяти не выделишь.
Не знаю зачем тебе пихать std::vector в разделяемую память(думаю, что проще обычные массивы в стиле Си), но запихать его туда можно.
Для этого вектор нужно создать в разделяемой памяти, это можно сделать через new(Placement new).
Потом тебе нужно располагать элементы вектора в той же распределяемой памяти, для этого придется написать свой аллокатор.
Использовать это:
C++ (Qt)
1
template < class T, class Allocator = allocator<T> > class vector;
И передачи объекта конкретного аллокатора:
C++ (Qt)
1
2
explicit vector ( const Allocator& = Allocator() );
explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator() );
0
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
06.11.2012, 20:58  [ТС] 5
Спасибо. Думаю это слишком кустарно. Если больше нет вариантов, сделаю через сокеты
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
06.11.2012, 22:39 6
Цитата Сообщение от Damaks Посмотреть сообщение
Думаю это слишком кустарно.
Поэтому в таки случаях пишут свои списки/массивы.
А потом доступ к общей памяти придется синхронизировать.
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
07.11.2012, 09:44 7
boost::interprocess смотрели?
0
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
09.11.2012, 22:30  [ТС] 8
Спасибо, уже организовал взаимодействие по сети
0
09.11.2012, 22:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2012, 22:30
Помогаю со студенческими работами здесь

Разделяемая память
Нужно файл отобразить в адресное пространство, принцип работы понимаю, но никак на практике...

Разделяемая память
Добрый день!!! Столкнулся вот с какой проблемой, мне необходимо написать программу крестики-нолики...

Разделяемая память
Как создать разделяемую память?? какие функции можно использовать. Я вроде нашел CreateFileMaping....

разделяемая память
Всем привет! подскажите, пожалуйста, как решить такую проблему: У меня есть программа которая...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru