2012-12-04 4 views
2

Je voudrais comprendre s'il y a des problèmes cachés avec l'utilisation InterlockedCompareExchange() pour changer une mémoire dans un segment créé avec CreateFileMapping(INVALID_HANDLE_VALUE) et partagé entre plusieurs processus. En d'autres termes, les processus peuvent-ils utiliser la sémantique CAS pour fonctionner avec le bloc de mémoire qu'ils partagent? Je suppose qu'ils peuvent, je veux juste confirmer cela.Comparer et échanger atomique pour un emplacement dans un segment de mémoire partagée

Merci

Répondre

1

opérations CAS fonctionneront parfaitement bien avec cette mémoire. L'API de mappage de fichiers et le système de mémoire virtuelle font tout le travail de mappage de la mémoire en plusieurs processus. Au moment où vous mettez la main sur la mémoire, vous ne pouvez pas le distinguer de tout autre morceau de mémoire.

+0

David, est-ce une «supposition intelligente» ou avez-vous écrit un code qui repose réellement sur cela? En théorie, cela devrait fonctionner correctement, mais ce que je cherche est de confirmer qu'il n'y a pas de problèmes connus dans le gestionnaire de mémoire de Windows à ce sujet. – Angstrom

+0

C'est juste de la mémoire à la fin de la journée. Ce n'est vraiment pas différent de la mémoire mappée en utilisant VirtualAlloc. –

+0

Assez juste, merci. – Angstrom

Questions connexes