Shared memory & std::map в избранное  новое горячее всё    подписка   модер. 
От: Аноним 647 
Дата: 27.05.08 08:29
Я хочу обмениваться между процессами сложными структурами данных наподобие std::map. Как разместить их в разделяемой памяти?
Re: Shared memory & std::map в избранное  новое    модер. 
От: kurt84 
Дата: 27.05.08 08:42
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Я хочу обмениваться между процессами сложными структурами данных наподобие std::map. Как разместить их в разделяемой памяти?


Например boost умеет делать подобное: здесь
Re: Shared memory & std::map в избранное  новое    модер. 
От: Erop 
Дата: 27.05.08 09:11
Здравствуйте, Аноним, Вы писали:

А>Я хочу обмениваться между процессами сложными структурами данных наподобие std::map. Как разместить их в разделяемой памяти?

Написать свой аллокатор?..
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Shared memory & std::map в избранное  новое    модер. 
От: Аноним 647 
Дата: 27.05.08 09:43
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Аноним, Вы писали:


А>>Я хочу обмениваться между процессами сложными структурами данных наподобие std::map. Как разместить их в разделяемой памяти?

E>Написать свой аллокатор?..
http://www.rsdn.ru/forum/NewMsg.aspx?mid=2965885#
Автор: Erop
Дата: 27.05.08


Это сложно. Никогда их не писал, даже не представляю как за это взяться.
Re[2]: Shared memory & std::map в избранное  новое    модер. 
От: Alexander G 
Дата: 27.05.08 09:58
Оценка: +1
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Аноним, Вы писали:


А>>Я хочу обмениваться между процессами сложными структурами данных наподобие std::map. Как разместить их в разделяемой памяти?

E>Написать свой аллокатор?..

Думаю, стоило бы уточнить что свой аллокатор работает для всех данных, помещеённых в контейнер, но не для самого контейнера, для самого контейнера решения не предусмотрено.
Re[3]: Shared memory & std::map в избранное  новое    модер. 
От: Erop 
Дата: 27.05.08 11:43
Здравствуйте, Alexander G, Вы писали:

AG>Думаю, стоило бы уточнить что свой аллокатор работает для всех данных, помещеённых в контейнер, но не для самого контейнера,

Да, прошу прощения, действительно стоило...

AG>для самого контейнера решения не предусмотрено.

new размещения в "родительском" процессе + reinterpret_cast в остальных?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Shared memory & std::map в избранное  новое    модер. 
От: gear nuke 
Дата: 27.05.08 13:40
Здравствуйте, Alexander G, Вы писали:

AG>для самого контейнера решения не предусмотрено.


2 варианта:

new (shared_memory) map<>;

shared_memory — либо поинтер для обычного placement new, либо тег вроде std::nothrow_t (и в аллокаторе использовать его же).
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth