Est-il possible de partager de la mémoire entre deux applications MFC C++ sans utiliser Memory mapped files? Actuellement, nous utilisons cette méthode pour partager des structures, et c'est trop lent pour nos besoins. Y a-t-il un meilleur moyen?Mémoire partagée sans fichiers mappés en mémoire
Répondre
Etes-vous sûr que ce sont les fichiers mappés en mémoire qui sont lents? Le système d'exploitation mappe le même morceau de RAM dans les deux espaces de processus (lorsqu'il est paginé.) D'autres causes de problèmes de performances peuvent être des mutex et autres primitives de synchronisation/lectures volatiles et invalidation de cache pour propager des modifications simultanées de la mémoire entre processus.
Vous pouvez essayer de modifier localement une zone non partagée, puis la copier en bloc plutôt que d'écrire plusieurs fois dans la mémoire partagée.
D'autres alternatives sont le passage de message, RPC ou DCOM, mais je doute que ceux-ci seront plus performants, en particulier si la quantité de données en cours de transfert/référencé est grande.
J'aurais pensé qu'une fois que vous auriez établi le mappage de la mémoire (avec MapViewOfFile), ce serait plutôt rapide.
Votre problème de performances est-il lié à la configuration de la mémoire mappée au lieu de l'utiliser une fois configurée? Si vous avez vraiment un problème vérifié avec les fichiers mappés en mémoire, c'est une autre technique: http://msdn.microsoft.com/en-us/library/h90dkhs0%28VS.80%29.aspx (segments de mémoire partagée DLL), mais je doute que cela va vraiment vous aider.
- 1. Fichiers mappés et mémoire mappés Java
- 2. fichiers mappés en mémoire dans C
- 3. Fichiers mappés de mémoire Windows
- 4. Quand utiliser des fichiers mappés en mémoire?
- 5. Ecriture en mémoire partagée
- 6. comment accéder aux fichiers mappés en mémoire C++ dans java
- 7. .Net 4.0 fichiers mappés en mémoire vers RDMS stockage
- 8. . Mappage des fichiers mappés en mémoire .NET 4.0
- 9. Linux Les fichiers mappés en mémoire réservent beaucoup de mémoire physique
- 10. Sémaphore de mémoire partagée
- 11. Comment libérer de la mémoire physique lors de l'utilisation de fichiers mappés en mémoire?
- 12. mod_fcgi + APC + Mémoire partagée
- 13. Augmenter la mémoire pour la mémoire partagée
- 14. Surveillance des fichiers mappés de la mémoire Windows
- 15. Mémoire partagée Linux
- 16. Visual Studio et mémoire partagée
- 17. mémoire partagée entre les compilateurs?
- 18. Partage de fichiers mappés en mémoire entre des processus 32 bits et 64 bits
- 19. Disques physiques et volumes physiques mappés en mémoire
- 20. Lecture des fichiers binaires, sans mise en mémoire tampon le fichier en mémoire en C++
- 21. Performance des fichiers mappés en mémoire - gestion de la mémoire lors de l'utilisation de grands ensembles de données
- 22. Les fichiers mappés en mémoire sont-ils défectueux pour les données en constante évolution?
- 23. Instanciation d'objets dans la mémoire partagée C++
- 24. Problèmes avec les fichiers mappés en mémoire avec les processus père et enfant
- 25. La mémoire partagée n'est pas partagée entre les processus
- 26. Charger la mémoire partagée dans C
- 27. Mémoire partagée et communication entre programmes
- 28. Utilisation de fichiers mappés en mémoire C++ Boost pour créer des structures de données en disque dur
- 29. Mutex en mémoire partagée lorsqu'un utilisateur tombe en panne?
- 30. Problème d'initialisation de mémoire partagée (c)
Je suis d'accord. Si c'est trop lent, je pense que c'est un problème de synchronisation, pas un problème de fichier mappé en mémoire. –