Распределенная разделяемая память библиотеки для C ++? - PullRequest
7 голосов
/ 21 сентября 2009

Я пишу распределенную прикладную среду на C ++. Одним из требований является предоставление распределенной разделяемой памяти. Вместо того, чтобы писать свою собственную с нуля (и, возможно, заново изобрести колесо), я подумал, что посмотрю, есть ли какие-либо ранее существующие библиотеки с открытым исходным кодом - быстрый поиск в Google не принес ничего полезного.

Есть ли у кого-нибудь опыт работы с хорошей библиотекой C ++ DSM, которую он может порекомендовать?

В идеале, библиотека будет поддерживать MRMW (несколько читателей / несколько писателей), но я могу обойтись MRSW (несколько читателей, один писатель), если это будет необходимо. Я занимаюсь разработкой под Linux.

Ответы [ 3 ]

6 голосов
/ 21 сентября 2009

Совместно используемая память Ace предназначена для совместного использования на 1 платформе.

Распределенная общая память очень нетривиальна, так как есть проблемы, связанные с транзакционностью, которые необходимо решить. Чтобы эффективно использовать распределенную общую память (даже для копии), вы обнаружите, что вам нужны (среди прочего) алгоритмы и протоколы распределенной синхронизации, которые нуждаются в отказоустойчивости перед лицом отказа. (Шшут! Не всегда так!)

Важные исследовательские работы были написаны по этим вопросам (см. Некоторые библиографии главы книги Таубенфилда)

Это действительно предупреждение о том, что «сворачивание своего» само по себе станет важным проектом.

3 голосов
/ 21 сентября 2009

Рассматривали ли вы memcached ?

Он распределен по сети и может быть очень быстрым.

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

0 голосов
/ 21 сентября 2009

Попробуйте ACE библиотеку , в ней есть много хороших вещей, которые вам понравятся. У них есть класс Shared_memory , но я не уверен, что это DSM - если нет, у них есть множество других сетевых / распределенных вещей, которые могут вас заинтересовать.

...