Je souhaite partager une integer array
, d'une taille fixe, en face d'un Windows Service
à C#
, à un code écrit en unmanaged C++
. Ce sera à travers 2 processus, le Windows Service
en C#
, à un autre processus en C++
.Partager tableau entier à travers la mémoire partagée de Managed au code non managé
Cette transaction doit être effectuée une fois, et il ne s'agit pas d'un grand tableau, mais simplement d'un transfert dans la mémoire partagée entre les deux.
Quel serait le moyen le plus efficace pour y parvenir? Peut-être avec memory mapped files
, mais je ne suis pas certain comment les données seront transmises.
EDIT -
Je ne veux pas utiliser un emballage CLI
ou P/INVOKE
(puisque je comprends qu'il est temps cher).
Je vais aller de l'avant avec le mappage de la mémoire, mais je ne suis pas sûr comment les données doivent être marshalled
et unmarshalled
entre les deux.
Pourquoi ne pas [utiliser P/Invoke pour passer le tableau à la fonction non managée] (https://msdn.microsoft.com/en-us/library/hk9wyw21%28v=vs.110%29.aspx)? –
Essayer d'écrire un code à faible latence. D'après ce que je comprends, P/Invoke coûte du temps. – user1173240
Je pense que je vais utiliser le fichier mappé mémoire, mais je ne suis pas sûr comment les données doivent être Marshalled sur le côté géré, puis unmarshalled sur l'autre. – user1173240