2009-09-21 21 views
7

Estoy escribiendo un marco de aplicación distribuida en C++. Uno de los requisitos es la provisión de memoria compartida distribuida. En lugar de escribir el mío desde cero (y potencialmente reinventar la rueda), pensé que vería si había alguna biblioteca de código abierto preexistente: una búsqueda rápida en Google no arrojó nada útil.Biblioteca de memoria compartida distribuida para C++?

¿Alguien aquí tiene experiencia en una buena biblioteca de C++ DSM que pueda recomendar?

Idealmente, la biblioteca admitirá MRMW (múltiples lectores/múltiples escritores), pero puedo arreglarme con MRSW (lectores múltiples, escritor único) si es necesario. Estoy desarrollando en Linux.

Respuesta

3

¿Has considerado memcached?

Se distribuye en red y puede ser realmente rápido.

Tiene enlaces para muchos idiomas, puede acceder desde diferentes sistemas operativos y es compatible con múltiples escritores lectores múltiples.

+1

Esto podría haber resuelto la necesidad práctica del OP, pero no responde la pregunta. Memcached es un caché de clave-valor distribuido, no un DSM (https://en.wikipedia.org/wiki/Distributed_shared_memory). Esta es una idea tan antigua [1, 2], que ahora debería haber bibliotecas maduras. 1. https://www.usenix.org/publications/library/proceedings/usenix-nt97/presentations/itzkovitz.ppt 2. https://www.usenix.org/legacy/events/osdi99/full_papers/itzkovitz/itzkovitz .pdf – ahcox

0

Pruebe el ACE library, tiene muchas cosas buenas que le gustarán. Tienen una clase de Shared_memory, pero no estoy seguro de que sea un DSM. Si no, tienen muchas otras cosas de red/distribuidas que pueden resultar interesantes.

+0

"Esta clase base adapta la memoria compartida System V y el mmap" BSD "a una API común", por lo que es un mecanismo IPC en un solo nodo, no una implementación DSM (ala, milipede http: //static.usenix .org/publications/library/proceedings/usenix-nt97/presentations/itzkovitz.ppt, millipage http://static.usenix.org/events/osdi99/full_papers/itzkovitz/itzkovitz_html/node12.html, etc. http: // dl.acm.org/citation.cfm?id=296806.296830#references) – ahcox

6

La memoria compartida Ace es para compartir en 1 plataforma.

La memoria compartida distribuida no es muy trivial ya que hay problemas relacionados con la transaccionalidad para resolver. Para utilizar eficazmente la memoria compartida distribuida (incluso para una copia), encontrará que necesita (entre otras cosas) algoritmos de sincronización distribuida y protocolos que necesiten resiliencia frente a fallas. (Shshooot! Aint que siempre es el camino!)

trabajos de investigación significativos se han escrito sobre estos temas (ver algunas de las bibliografías de los capítulos del libro de Taubenfield)

Esto es realmente una advertencia de que "rodar su propia" se ser un proyecto significativo en sí mismo.

Cuestiones relacionadas