2009-09-21 27 views
7

Sto scrivendo una struttura di applicazione distribuita in C++. Uno dei requisiti è la fornitura di memoria condivisa distribuita. Piuttosto che scrivere il mio da zero (e potenzialmente reinventare la ruota), ho pensato di vedere se esistevano delle librerie Open Source preesistenti - una ricerca rapida su google non ha reso nulla di utile.Libreria di memoria condivisa distribuita per C++?

Qualcuno qui ha esperienza di una buona libreria C++ DSM che può consigliare?

Idealmente, la libreria supporterà MRMW (lettori multipli/scrittori multipli), ma posso accontentarmi di MRSW (lettori multipli, scrittore singolo) se necessario. Sto sviluppando su Linux.

risposta

3

Avete considerato memcached?

È distribuito in rete e può essere molto veloce.

Ha legami per molte lingue, è possibile accedervi da diversi sistemi operativi e supporta più lettori di più lettori.

+1

Questo potrebbe aver risolto la necessità pratica dell'OP ma non risponde alla domanda. Memcached è una cache a valore-chiave distribuita, non un DSM (https://en.wikipedia.org/wiki/Distributed_shared_memory). Questa è un'idea così antica [1, 2], ci dovrebbero essere biblioteche mature ormai. 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

Prova il ACE library, ha un sacco di cose buone che ti piaceranno. Hanno una classe Shared_memory, ma non sono sicuro che sia un DSM - in caso contrario, hanno un sacco di altre cose di rete/distribuite che potresti trovare interessanti.

+0

"Questa classe base adatta sia memoria condivisa System V che" BSD "mmap a un'API comune", quindi è un meccanismo IPC su un singolo nodo, non un'implementazione DSM (ala, millepiedi http: //static.usenix .org/pubblicazioni/biblioteca/atti/usenix-nt97/presentazioni/itzkovitz.ppt, millipage http://static.usenix.org/events/osdi99/full_papers/itzkovitz/itzkovitz_html/node12.html, ecc. http: // dl.acm.org/citation.cfm?id=296806.296830#references) – ahcox

6

Ace memoria condivisa è per la condivisione su 1 piattaforma.

La memoria condivisa distribuita non è affatto banale in quanto vi sono problemi relativi alla transazionalità da risolvere. Per utilizzare efficacemente la memoria condivisa distribuita (anche per una copia), è necessario trovare (tra le altre cose) algoritmi e protocolli di sincronizzazione distribuiti che richiedono resilienza di fronte al fallimento. (Shshooot! Aint che sempre la strada!)

documenti di ricerca di rilievo sono stati scritti su questi temi (vedi alcuni dei capitoli bibliografie del libro di Taubenfield)

Questo è veramente un avvertimento che "posizionare il proprio" sarà essere un progetto significativo in sé e per sé.

Problemi correlati