web-dev-qa-db-fra.com

partage de mémoire entre deux applications

J'ai deux applications Windows différentes (deux personnes différentes écrivant le code). L'un est écrit en C++ et l'autre en C #. J'ai besoin d'un moyen de partager des données dans RAM entre eux. Un doit écrire des données et un autre ne lit que les données écrites. Que devrais-je utiliser pour le rendre plus efficace et rapide? Merci.

15
uniquepito

Vous pouvez utiliser Fichiers mappés en mémoire .

Ici est un article MSDN décrivant comment les utiliser.

23
Oded

Utilisez un objet Windows File Mapping Object qui vous permet de partager la mémoire entre les processus.

2
Michael Goldshteyn

Vous pouvez utiliser NomméPipes .

Un canal nommé est un canal nommé, unidirectionnel ou duplex pour la communication entre le serveur de canal et un ou plusieurs clients du canal. Toutes les instances d'un canal nommé partagent le même nom, mais chaque instance possède ses propres tampons et poignées et fournit un canal distinct pour la communication client/serveur. L'utilisation d'instances permet à plusieurs clients de canal d'utiliser simultanément le même canal nommé.

Tout processus peut accéder à des canaux nommés, soumis à des contrôles de sécurité, ce qui permet aux canaux nommés de communiquer facilement entre processus liés ou non.

2
dtb

Je vous recommande de le revoir pour le laisser utiliser une communication basée sur des messages. Il est plus robuste et beaucoup plus facile à utiliser dans .NET avec sa gestion de mémoire automatique (comparée à la mémoire partagée). Bien que plus lent.

0
Al Kepp

Est-ce que ce doit être le bélier que vous partagez? Sinon, vous pourriez écrire vos données pour dire un fichier XML d'une application et lire le XML avec l'autre. Vous devez vous assurer qu'une seule application à la fois lit à partir de la ressource. Dans le cas d'un fichier xml, vous pouvez créer un fichier dans le répertoire du fichier XML intitulé "xml_filename.lock" qui, le cas échéant, indique que le fichier XML est utilisé par l'autre application.

Si ce type de solution ne correspond pas à votre objectif, veuillez m'en dire plus sur ce que vous essayez de faire. En principe, une application ne doit pas partager de mémoire avec d'autres applications pour assurer la stabilité et la sécurité.

0
Ric Jafe