2009-12-11 22 views
0

Existe-t-il une bibliothèque utilisable depuis C++ pour partager des données assez simples (entiers, nombres à virgule flottante, chaînes) entre des processus coopératifs?tableau associatif interprocesseur haute vitesse

doit être:

  • -haut débit (méthodes basées sur SQL trop lent en raison de l'analyse syntaxique)
  • en mesure d'obtenir, ensemble, mettre à jour, supprimer les deux types de données fixes et variables (par exemple int et string)
  • ACID (atomique, cohérent, isolé, durable)
  • utilisable sous Linux
  • utilisable par des procédés sans un parent commun.
  • licence hautement compatible: par ex. LGPL, MIT, BSD

Pour les points de bonus:

  • capacité à travailler à travers le réseau.
  • capacité à gérer l'agrégation/composition dans des structures plus complexes
+0

Je ne l'ai pas utilisé, mais avez-vous étudié les capacités de D-Bus pour IPC? –

+0

STL Carte + activemq? –

Répondre

1

Jetez un oeil à boost::interprocess. Pour une utilisation locale, vous ne pouvez probablement pas battre une carte ou une table de hachage dans la mémoire partagée. Permettre le réseautage rend les choses plus difficiles, dans ce cas, quelque chose comme memcached ou CouchDB pourrait être plus approprié.

+0

Il existe une discussion sur l'utilisation de conteneurs STL et Boost avec Boost.InterProcess: http://www.boost.org/doc/libs/1_41_0/doc/html/interprocess/allocators_containers.html#interprocess.allocators_containers.containers_explained –

+0

Je cherche juste ça, merci. Etre capable d'utiliser les mêmes classes pour les structures de données à mémoire partagée que dans le code "normal" est assez astucieux. –